Clean up grammar (#268)

This commit is contained in:
Casey Rodarmor 2017-11-30 17:44:06 +01:00 committed by GitHub
parent def1bda9ff
commit 659af49231
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -11,22 +11,29 @@ tokens
```
BACKTICK = `[^`\n\r]*`
COLON = :
COMMENT = #([^!].*)?$
NEWLINE = \n|\r\n
EQUALS = =
INTERPOLATION_START = {{
INTERPOLATION_END = }}
DEDENT = emitted when indentation decreases
EOF = emitted at the end of the file
INDENT = emitted when indentation increases
LINE = emitted before a recipe line
NAME = [a-zA-Z_][a-zA-Z0-9_-]*
PLUS = +
NEWLINE = \n|\r\n
RAW_STRING = '[^'\r\n]*'
STRING = "[^"]*" # also processes \n \r \t \" \\ escapes
INDENT = emitted when indentation increases
DEDENT = emitted when indentation decreases
LINE = emitted before a recipe line
TEXT = recipe text, only matches in a recipe body
```
grammar syntax
--------------
```
| alternation
() grouping
_? option (0 or 1 times)
_* repetition (0 or more times)
_+ repetition (1 or more times)
```
grammar
-------
@ -45,11 +52,13 @@ assignment : NAME '=' expression eol
export : 'export' assignment
expression : STRING
expression : value '+' expression
| value
value : STRING
| RAW_STRING
| NAME
| BACKTICK
| expression '+' expression
recipe : '@'? NAME parameter* ('+' parameter)? ':' dependencies? body?