diff options
Diffstat (limited to '')
| -rw-r--r-- | spec/inputs/whitespace.moon | 29 | ||||
| -rw-r--r-- | src/MoonP/moon_parser.cpp | 8 |
2 files changed, 19 insertions, 18 deletions
diff --git a/spec/inputs/whitespace.moon b/spec/inputs/whitespace.moon index 06b8773..06ce4eb 100644 --- a/spec/inputs/whitespace.moon +++ b/spec/inputs/whitespace.moon | |||
| @@ -100,36 +100,37 @@ c(one, two, | |||
| 100 | -- | 100 | -- |
| 101 | 101 | ||
| 102 | v = -> | 102 | v = -> |
| 103 | a, | 103 | a, -- v1 |
| 104 | b, | 104 | b, -- v2 |
| 105 | c | 105 | c -- v3 |
| 106 | 106 | ||
| 107 | v1, v2, | 107 | v1, v2, |
| 108 | v3 = -> | 108 | v3 = -> |
| 109 | a; | 109 | a; -- end of function for v1 |
| 110 | b, | 110 | b, -- v2 |
| 111 | c | 111 | c -- v3 |
| 112 | 112 | ||
| 113 | a, b, | 113 | a, b, |
| 114 | c, d, | 114 | c, d, |
| 115 | e, f = 1, | 115 | e, f = 1, |
| 116 | f2 | 116 | f2 |
| 117 | :abc; | 117 | :abc; -- arg2 |
| 118 | 3, | 118 | 3, |
| 119 | 4, | 119 | 4, |
| 120 | f5 abc; | 120 | f5 abc; -- arg5 |
| 121 | 6 | 121 | 6 |
| 122 | 122 | ||
| 123 | for a, | 123 | for a, -- destruct 1 |
| 124 | b, | 124 | b, -- destruct 2 |
| 125 | c in pairs tb | 125 | --[[destruct 3]] c |
| 126 | in pairs tb | ||
| 126 | print a, | 127 | print a, |
| 127 | b, | 128 | b, |
| 128 | c | 129 | c |
| 129 | 130 | ||
| 130 | for i = 1, | 131 | for i = 1, -- initial |
| 131 | 10, | 132 | 10, -- stop |
| 132 | -1 | 133 | -1 -- step |
| 133 | print i | 134 | print i |
| 134 | 135 | ||
| 135 | local a, | 136 | local a, |
diff --git a/src/MoonP/moon_parser.cpp b/src/MoonP/moon_parser.cpp index 8d7fdc5..39551d2 100644 --- a/src/MoonP/moon_parser.cpp +++ b/src/MoonP/moon_parser.cpp | |||
| @@ -36,7 +36,6 @@ MoonParser::MoonParser() { | |||
| 36 | plain_space = *set(" \t"); | 36 | plain_space = *set(" \t"); |
| 37 | Break = nl(-expr('\r') >> '\n'); | 37 | Break = nl(-expr('\r') >> '\n'); |
| 38 | Any = Break | any(); | 38 | Any = Break | any(); |
| 39 | White = *(set(" \t") | Break); | ||
| 40 | Stop = Break | eof(); | 39 | Stop = Break | eof(); |
| 41 | Indent = plain_space; | 40 | Indent = plain_space; |
| 42 | Comment = "--" >> *(not_(set("\r\n")) >> Any) >> and_(Stop); | 41 | Comment = "--" >> *(not_(set("\r\n")) >> Any) >> and_(Stop); |
| @@ -45,8 +44,9 @@ MoonParser::MoonParser() { | |||
| 45 | multi_line_content = *(not_(multi_line_close) >> Any); | 44 | multi_line_content = *(not_(multi_line_close) >> Any); |
| 46 | MultiLineComment = multi_line_open >> multi_line_content >> multi_line_close; | 45 | MultiLineComment = multi_line_open >> multi_line_content >> multi_line_close; |
| 47 | EscapeNewLine = expr('\\') >> *(set(" \t") | MultiLineComment) >> -Comment >> Break; | 46 | EscapeNewLine = expr('\\') >> *(set(" \t") | MultiLineComment) >> -Comment >> Break; |
| 48 | Space = *(set(" \t") | MultiLineComment | EscapeNewLine) >> -Comment; | 47 | Space = *(set(" \t") | and_(set("-\\")) >> (MultiLineComment | EscapeNewLine)) >> -Comment; |
| 49 | SpaceBreak = Space >> Break; | 48 | SpaceBreak = Space >> Break; |
| 49 | White = Space >> *(Break >> Space); | ||
| 50 | EmptyLine = SpaceBreak; | 50 | EmptyLine = SpaceBreak; |
| 51 | AlphaNum = range('a', 'z') | range('A', 'Z') | range('0', '9') | '_'; | 51 | AlphaNum = range('a', 'z') | range('A', 'Z') | range('0', '9') | '_'; |
| 52 | Name = (range('a', 'z') | range('A', 'Z') | '_') >> *AlphaNum; | 52 | Name = (range('a', 'z') | range('A', 'Z') | '_') >> *AlphaNum; |
| @@ -207,7 +207,7 @@ MoonParser::MoonParser() { | |||
| 207 | 207 | ||
| 208 | for_in = star_exp | ExpList; | 208 | for_in = star_exp | ExpList; |
| 209 | 209 | ||
| 210 | ForEach = key("for") >> AssignableNameList >> key("in") >> | 210 | ForEach = key("for") >> AssignableNameList >> White >> key("in") >> |
| 211 | DisableDo >> ensure(for_in, PopDo) >> | 211 | DisableDo >> ensure(for_in, PopDo) >> |
| 212 | -key("do") >> Body; | 212 | -key("do") >> Body; |
| 213 | 213 | ||
| @@ -233,7 +233,7 @@ MoonParser::MoonParser() { | |||
| 233 | 233 | ||
| 234 | Comprehension = sym('[') >> Exp >> CompInner >> sym(']'); | 234 | Comprehension = sym('[') >> Exp >> CompInner >> sym(']'); |
| 235 | comp_value = sym(',') >> Exp; | 235 | comp_value = sym(',') >> Exp; |
| 236 | TblComprehension = sym('{') >> (Exp >> -comp_value) >> CompInner >> sym('}'); | 236 | TblComprehension = sym('{') >> Exp >> -comp_value >> CompInner >> sym('}'); |
| 237 | 237 | ||
| 238 | CompInner = Seperator >> (CompForEach | CompFor) >> *CompClause; | 238 | CompInner = Seperator >> (CompForEach | CompFor) >> *CompClause; |
| 239 | star_exp = sym('*') >> Exp; | 239 | star_exp = sym('*') >> Exp; |
