| OLD | NEW |
| 1 # Copyright 2013 the V8 project authors. All rights reserved. | 1 # Copyright 2013 the V8 project authors. All rights reserved. |
| 2 # Redistribution and use in source and binary forms, with or without | 2 # Redistribution and use in source and binary forms, with or without |
| 3 # modification, are permitted provided that the following conditions are | 3 # modification, are permitted provided that the following conditions are |
| 4 # met: | 4 # met: |
| 5 # | 5 # |
| 6 # * Redistributions of source code must retain the above copyright | 6 # * Redistributions of source code must retain the above copyright |
| 7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
| 8 # * Redistributions in binary form must reproduce the above | 8 # * Redistributions in binary form must reproduce the above |
| 9 # copyright notice, this list of conditions and the following | 9 # copyright notice, this list of conditions and the following |
| 10 # disclaimer in the documentation and/or other materials provided | 10 # disclaimer in the documentation and/or other materials provided |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 /0[xX][:hex_digit:]+/ | ( | 47 /0[xX][:hex_digit:]+/ | ( |
| 48 /\.[:digit:]+/ maybe_exponent | | 48 /\.[:digit:]+/ maybe_exponent | |
| 49 non_octal_whole_part /(\.[:digit:]*)?/ maybe_exponent ); | 49 non_octal_whole_part /(\.[:digit:]*)?/ maybe_exponent ); |
| 50 harmony_number = "0"[bBoO][:digit:]+; | 50 harmony_number = "0"[bBoO][:digit:]+; |
| 51 line_terminator_sequence = /[:line_terminator:]|(\r\n|\n\r)/; | 51 line_terminator_sequence = /[:line_terminator:]|(\r\n|\n\r)/; |
| 52 eos = [:eos:]; | 52 eos = [:eos:]; |
| 53 | 53 |
| 54 # grammar is | 54 # grammar is |
| 55 # regex <action_on_state_entry|action_on_match|transition> | 55 # regex <action_on_state_entry|action_on_match|transition> |
| 56 # | 56 # |
| 57 # actions can be c code enclosed in {} or identifiers to be passed to codegen | 57 # actions are identifiers to be passed to codegen |
| 58 # transition must be 'continue' or the name of a subgraph | 58 # transition must be 'continue' or the name of a subgraph |
| 59 | 59 |
| 60 <<default>> | 60 <<default>> |
| 61 | 61 |
| 62 "|=" <|token(ASSIGN_BIT_OR)|> | 62 "|=" <|token(ASSIGN_BIT_OR)|> |
| 63 "^=" <|token(ASSIGN_BIT_XOR)|> | 63 "^=" <|token(ASSIGN_BIT_XOR)|> |
| 64 "&=" <|token(ASSIGN_BIT_AND)|> | 64 "&=" <|token(ASSIGN_BIT_AND)|> |
| 65 "+=" <|token(ASSIGN_ADD)|> | 65 "+=" <|token(ASSIGN_ADD)|> |
| 66 "-=" <|token(ASSIGN_SUB)|> | 66 "-=" <|token(ASSIGN_SUB)|> |
| 67 "*=" <|token(ASSIGN_MUL)|> | 67 "*=" <|token(ASSIGN_MUL)|> |
| 68 "/=" <|token(ASSIGN_DIV)|> | 68 "/=" <|token(ASSIGN_DIV)|> |
| 69 "%=" <|token(ASSIGN_MOD)|> | 69 "%=" <|token(ASSIGN_MOD)|> |
| 70 | 70 |
| 71 "===" <|token(EQ_STRICT)|> | 71 "===" <|token(EQ_STRICT)|> |
| 72 "==" <|token(EQ)|> | 72 "==" <|token(EQ)|> |
| 73 "=" <|token(ASSIGN)|> | 73 "=" <|token(ASSIGN)|> |
| 74 "!==" <|token(NE_STRICT)|> | 74 "!==" <|token(NE_STRICT)|> |
| 75 "!=" <|token(NE)|> | 75 "!=" <|token(NE)|> |
| 76 "!" <|token(NOT)|> | 76 "!" <|token(NOT)|> |
| 77 | 77 |
| 78 "//" <||SingleLineComment> | 78 "//" <||SingleLineComment> |
| 79 "/*" <set_marker(2)||MultiLineComment> | 79 "/*" <set_marker(2)||MultiLineComment> |
| 80 "<!--" <||SingleLineComment> | 80 "<!--" <||SingleLineComment> |
| 81 | 81 |
| 82 "<!-" <|{ | 82 "<!-" <|backtrack(2, LT)|> |
| 83 BACKWARD(2); | 83 "<!" <|backtrack(1, LT)|> |
| 84 DO_TOKEN(Token::LT); | 84 "-->" <if_line_terminator_backtrack(1, DEC)||SingleLineComment> |
| 85 return; | |
| 86 }|> | |
| 87 | |
| 88 "<!" <|{ | |
| 89 BACKWARD(1); | |
| 90 DO_TOKEN(Token::LT); | |
| 91 return; | |
| 92 }|> | |
| 93 | |
| 94 "-->" <{ | |
| 95 if (!has_line_terminator_before_next_) { | |
| 96 BACKWARD(1); | |
| 97 DO_TOKEN(Token::DEC); | |
| 98 return; | |
| 99 } | |
| 100 }||SingleLineComment> | |
| 101 | 85 |
| 102 ">>>=" <|token(ASSIGN_SHR)|> | 86 ">>>=" <|token(ASSIGN_SHR)|> |
| 103 ">>>" <|token(SHR)|> | 87 ">>>" <|token(SHR)|> |
| 104 "<<=" <|token(ASSIGN_SHL)|> | 88 "<<=" <|token(ASSIGN_SHL)|> |
| 105 ">>=" <|token(ASSIGN_SAR)|> | 89 ">>=" <|token(ASSIGN_SAR)|> |
| 106 "<=" <|token(LTE)|> | 90 "<=" <|token(LTE)|> |
| 107 ">=" <|token(GTE)|> | 91 ">=" <|token(GTE)|> |
| 108 "<<" <|token(SHL)|> | 92 "<<" <|token(SHL)|> |
| 109 ">>" <|token(SAR)|> | 93 ">>" <|token(SAR)|> |
| 110 "<" <|token(LT)|> | 94 "<" <|token(LT)|> |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 "true" <|token(TRUE_LITERAL)|> | 177 "true" <|token(TRUE_LITERAL)|> |
| 194 "try" <|token(TRY)|> | 178 "try" <|token(TRY)|> |
| 195 "typeof" <|token(TYPEOF)|> | 179 "typeof" <|token(TYPEOF)|> |
| 196 "var" <|token(VAR)|> | 180 "var" <|token(VAR)|> |
| 197 "void" <|token(VOID)|> | 181 "void" <|token(VOID)|> |
| 198 "while" <|token(WHILE)|> | 182 "while" <|token(WHILE)|> |
| 199 "with" <|token(WITH)|> | 183 "with" <|token(WITH)|> |
| 200 "yield" <|token(YIELD)|> | 184 "yield" <|token(YIELD)|> |
| 201 | 185 |
| 202 identifier_start <|token(IDENTIFIER)|Identifier> | 186 identifier_start <|token(IDENTIFIER)|Identifier> |
| 203 /\\u[:hex_digit:]{4}/ <{ | 187 /\\u[:hex_digit:]{4}/ <check_escaped_identifier_start|token(IDENTIFIER)|Identifi
er> |
| 204 if (V8_UNLIKELY(!ValidIdentifierStart())) { | |
| 205 goto default_action; | |
| 206 } | |
| 207 next_.has_escapes = true; | |
| 208 }|token(IDENTIFIER)|Identifier> | |
| 209 | 188 |
| 210 eos <|terminate|> | 189 eos <|terminate|> |
| 211 default_action <do_token_and_go_forward(ILLEGAL)> | 190 default_action <do_token_and_go_forward(ILLEGAL)> |
| 212 | 191 |
| 213 <<DoubleQuoteString>> | 192 <<DoubleQuoteString>> |
| 214 "\\" line_terminator_sequence <set_has_escapes||continue> | 193 "\\" line_terminator_sequence <set_has_escapes||continue> |
| 215 /\\[x][:hex_digit:]{2}/ <set_has_escapes||continue> | 194 /\\[x][:hex_digit:]{2}/ <set_has_escapes||continue> |
| 216 /\\[u][:hex_digit:]{4}/ <set_has_escapes||continue> | 195 /\\[u][:hex_digit:]{4}/ <set_has_escapes||continue> |
| 217 /\\[1-7]/ <octal_inside_string||continue> | 196 /\\[1-7]/ <octal_inside_string||continue> |
| 218 /\\[0-7][0-7]+/ <octal_inside_string||continue> | 197 /\\[0-7][0-7]+/ <octal_inside_string||continue> |
| (...skipping 15 matching lines...) Expand all Loading... |
| 234 "\\0" <set_has_escapes||continue> | 213 "\\0" <set_has_escapes||continue> |
| 235 /\\[^xu0-7:line_terminator:]/ <set_has_escapes||continue> | 214 /\\[^xu0-7:line_terminator:]/ <set_has_escapes||continue> |
| 236 "\\" <|token(ILLEGAL)|> | 215 "\\" <|token(ILLEGAL)|> |
| 237 line_terminator <|token(ILLEGAL)|> | 216 line_terminator <|token(ILLEGAL)|> |
| 238 "'" <|token(STRING)|> | 217 "'" <|token(STRING)|> |
| 239 eos <|terminate_illegal|> | 218 eos <|terminate_illegal|> |
| 240 catch_all <||continue> | 219 catch_all <||continue> |
| 241 | 220 |
| 242 <<Identifier>> | 221 <<Identifier>> |
| 243 identifier_char <|token(IDENTIFIER)|continue> | 222 identifier_char <|token(IDENTIFIER)|continue> |
| 244 /\\u[:hex_digit:]{4}/ <{ | 223 /\\u[:hex_digit:]{4}/ <check_escaped_identifier_part|token(IDENTIFIER)|continue> |
| 245 if (V8_UNLIKELY(!ValidIdentifierPart())) { | |
| 246 goto default_action; | |
| 247 } | |
| 248 next_.has_escapes = true; | |
| 249 }|token(IDENTIFIER)|continue> | |
| 250 | 224 |
| 251 <<SingleLineComment>> | 225 <<SingleLineComment>> |
| 252 line_terminator <|line_terminator|> | 226 line_terminator <|line_terminator|> |
| 253 eos <|skip_and_terminate|> | 227 eos <|skip_and_terminate|> |
| 254 catch_all <||continue> | 228 catch_all <||continue> |
| 255 | 229 |
| 256 <<MultiLineComment>> | 230 <<MultiLineComment>> |
| 257 /\*+\// <|skip|> | 231 /\*+\// <|skip|> |
| 258 # TODO find a way to generate the below rule | 232 # TODO find a way to generate the below rule |
| 259 /\*+[^\/*]/ <||continue> | 233 /\*+[^\/*]/ <||continue> |
| 260 line_terminator <line_terminator_in_multiline_comment||continue> | 234 line_terminator <line_terminator_in_multiline_comment||continue> |
| 261 eos <|terminate_illegal|> | 235 eos <|terminate_illegal|> |
| 262 catch_all <||continue> | 236 catch_all <||continue> |
| OLD | NEW |