scriptGrammar

Grammar to be parsed by pegged Potentially full of bugs

enum scriptGrammar = ` ScriptGrammar: # This is a simple testing bed for grammars Script <- (EmptyLine / Block)+ :eoi Block <- Attribute? (:' ' Attribute)* (EnclosedBlock / OpenBlock) :Whitespace* Attribute <- ( OSAttr ) OSAttr <- ('win' / 'linux') EnclosedBlock <- :Whitespace* '{' ( :Whitespace* (Statement / Block) :Whitespace* )* :Whitespace* '}' :Whitespace* OpenBlock <- (:Whitespace* Statement :Whitespace*) Statement <- :Whitespace* (Comment / Spawn / Send / Expect / Set / Import) :Spacing* :Whitespace* Comment <: :Spacing* '#' (!eoi !endOfLine .)* Spawn <- :"spawn" :Spacing* ToSpawn ToSpawn <- (~Variable / ~String) :Spacing ('~' :Spacing ToSpawn)* Send <- :"send" :Spacing* ToSend ToSend <- (~Variable / ~String) :Spacing ('~' :Spacing ToSend)* Expect <- :"expect" :Spacing* ToExpect ToExpect <- (~Variable / ~String) :Spacing ('~' :Spacing ToExpect)* Set <- :'set' :Spacing* SetVar :Spacing :'=' Spacing SetVal SetVar <- ~VarName SetVal <- (~Variable / ~String) :Spacing ('~' :Spacing SetVal)* Import <- 'import' :Spacing* ToImport ToImport <- (~Variable / ~String) Keyword <~ ('#' / 'set' / 'expect' / 'spawn' / 'send') KeywordData <~ (!eoi !endOfLine .)+ Variable <- :"$(" VarName :")" VarName <- (!eoi !endOfLine !')' !'(' !'$' !'=' !'~' .)+ Text <- (!eoi !endOfLine !'~' .)+ DoubleQuoteText <- :doublequote (!eoi !doublequote .)+ :doublequote SingleQuoteText <- :"'" (!eoi !"'" .)+ :"'" String <- ( ~DoubleQuoteText / ~SingleQuoteText / ~Text ) Whitespace <- (Spacing / EmptyLine) EmptyLine <- ('\n\r' / '\n')+ `;

Meta