Changeset View
Changeset View
Standalone View
Standalone View
parser/php.g
Show First 20 Lines • Show All 263 Lines • ▼ Show 20 Line(s) | 260 | %token IS_EQUAL ("=="), IS_NOT_EQUAL ("!="), IS_IDENTICAL ("==="), | |||
---|---|---|---|---|---|
264 | PLUS_ASSIGN ("+="), MINUS_ASSIGN ("-="), MUL_ASSIGN ("*="), DIV_ASSIGN ("/="), | 264 | PLUS_ASSIGN ("+="), MINUS_ASSIGN ("-="), MUL_ASSIGN ("*="), DIV_ASSIGN ("/="), | ||
265 | CONCAT_ASSIGN (".="), MOD_ASSIGN ("%="), AND_ASSIGN ("&="), OR_ASSIGN ("|="), | 265 | CONCAT_ASSIGN (".="), MOD_ASSIGN ("%="), AND_ASSIGN ("&="), OR_ASSIGN ("|="), | ||
266 | XOR_ASSIGN ("^="), SL_ASSIGN ("<<="), SR_ASSIGN (">>="), OBJECT_OPERATOR ("->"), | 266 | XOR_ASSIGN ("^="), SL_ASSIGN ("<<="), SR_ASSIGN (">>="), OBJECT_OPERATOR ("->"), | ||
267 | PLUS ("+"), MINUS("-"), CONCAT("."), | 267 | PLUS ("+"), MINUS("-"), CONCAT("."), | ||
268 | INC ("++"), DEC ("--"), BANG ("!"), QUESTION ("?"), COLON (":"), | 268 | INC ("++"), DEC ("--"), BANG ("!"), QUESTION ("?"), COLON (":"), | ||
269 | BIT_AND ("&"), BIT_OR("|"), BIT_XOR ("^"), | 269 | BIT_AND ("&"), BIT_OR("|"), BIT_XOR ("^"), | ||
270 | SL ("<<"), SR (">>"), MUL("*"), DIV("/"), MOD ("%"), | 270 | SL ("<<"), SR (">>"), MUL("*"), DIV("/"), MOD ("%"), | ||
271 | TILDE ("~"), DOLLAR ("$"), EXP ("**"), ELLIPSIS ("..."), | 271 | TILDE ("~"), DOLLAR ("$"), EXP ("**"), ELLIPSIS ("..."), | ||
272 | NULL_COALESCE ("??"), SPACESHIP ("<=>"), | ||||
272 | LOGICAL_OR ("logical or"), LOGICAL_AND ("logical and"), LOGICAL_XOR ("logical xor") ;; | 273 | LOGICAL_OR ("logical or"), LOGICAL_AND ("logical and"), LOGICAL_XOR ("logical xor") ;; | ||
273 | 274 | | |||
274 | -- literals and identifiers: | 275 | -- literals and identifiers: | ||
275 | %token INLINE_HTML ("inline html"), WHITESPACE ("whitespace"), | 276 | %token INLINE_HTML ("inline html"), WHITESPACE ("whitespace"), | ||
276 | CONSTANT_ENCAPSED_STRING ("constant encapsed string"), | 277 | CONSTANT_ENCAPSED_STRING ("constant encapsed string"), | ||
277 | VARIABLE ("variable"), ENCAPSED_AND_WHITESPACE ("encapsed and whitespace"), | 278 | VARIABLE ("variable"), ENCAPSED_AND_WHITESPACE ("encapsed and whitespace"), | ||
278 | DNUMBER ("double number"), LNUMBER ("long number"), | 279 | DNUMBER ("double number"), LNUMBER ("long number"), | ||
279 | NUM_STRING ("num string"), STRING ("string"), | 280 | NUM_STRING ("num string"), STRING ("string"), | ||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Line(s) | |||||
331 | 332 | | |||
332 | --Operator Precedence, from PHP Manual | 333 | --Operator Precedence, from PHP Manual | ||
333 | --left or | 334 | --left or | ||
334 | --left xor | 335 | --left xor | ||
335 | --left and | 336 | --left and | ||
336 | --right print | 337 | --right print | ||
337 | --right = += -= *= /= .= %= &= |= ^= <<= >>= assignment | 338 | --right = += -= *= /= .= %= &= |= ^= <<= >>= assignment | ||
338 | --left ? : ternary | 339 | --left ? : ternary | ||
340 | --right ?? comparison | ||||
339 | --left || logical | 341 | --left || logical | ||
340 | --left && logical | 342 | --left && logical | ||
341 | --left | bitwise | 343 | --left | bitwise | ||
342 | --left ^ bitwise | 344 | --left ^ bitwise | ||
343 | --left & bitwise and references | 345 | --left & bitwise and references | ||
344 | --non-associative == != === !== comparison | 346 | --non-associative == != === !== <=> comparison | ||
345 | --non-associative < <= > >= comparison | 347 | --non-associative < <= > >= comparison | ||
346 | --left << >> bitwise | 348 | --left << >> bitwise | ||
347 | --left + - . arithmetic and string | 349 | --left + - . arithmetic and string | ||
348 | --left * / % arithmetic | 350 | --left * / % arithmetic | ||
349 | --non-associative ! ~ - (int) (float) (string) (array) (object) @ types | 351 | --non-associative ! ~ - (int) (float) (string) (array) (object) @ types | ||
350 | --non-associative ++ -- increment/decrement | 352 | --non-associative ++ -- increment/decrement | ||
351 | --left [ array() | 353 | --left [ array() | ||
352 | --non-associative new new | 354 | --non-associative new new | ||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Line(s) | |||||
418 | [: | 420 | [: | ||
419 | if (!m_state.varExpressionIsVariable) { | 421 | if (!m_state.varExpressionIsVariable) { | ||
420 | reportProblem(Error, QStringLiteral("Left side is not a variable")); | 422 | reportProblem(Error, QStringLiteral("Left side is not a variable")); | ||
421 | return false; | 423 | return false; | ||
422 | } | 424 | } | ||
423 | :] | 425 | :] | ||
424 | -> assignmentExpressionCheckIfVariable ;; | 426 | -> assignmentExpressionCheckIfVariable ;; | ||
425 | 427 | | |||
426 | expression=booleanOrExpression | 428 | expression=nullCoalesceExpression | ||
427 | ( QUESTION (ifExpression=expr|0) | 429 | ( QUESTION (ifExpression=expr|0) | ||
428 | COLON elseExpression=conditionalExpression | 430 | COLON elseExpression=conditionalExpression | ||
429 | | 0 | 431 | | 0 | ||
430 | ) | 432 | ) | ||
431 | -> conditionalExpression ;; | 433 | -> conditionalExpression ;; | ||
432 | 434 | | |||
435 | #expression=booleanOrExpression @ NULL_COALESCE | ||||
436 | -> nullCoalesceExpression ;; | ||||
437 | | ||||
433 | #expression=booleanAndExpression @ BOOLEAN_OR | 438 | #expression=booleanAndExpression @ BOOLEAN_OR | ||
434 | -> booleanOrExpression ;; | 439 | -> booleanOrExpression ;; | ||
435 | 440 | | |||
436 | #expression=bitOrExpression @ BOOLEAN_AND | 441 | #expression=bitOrExpression @ BOOLEAN_AND | ||
437 | -> booleanAndExpression ;; | 442 | -> booleanAndExpression ;; | ||
438 | 443 | | |||
439 | #expression=bitXorExpression @ BIT_OR | 444 | #expression=bitXorExpression @ BIT_OR | ||
440 | -> bitOrExpression ;; | 445 | -> bitOrExpression ;; | ||
441 | 446 | | |||
442 | #expression=bitAndExpression @ BIT_XOR | 447 | #expression=bitAndExpression @ BIT_XOR | ||
443 | -> bitXorExpression ;; | 448 | -> bitXorExpression ;; | ||
444 | 449 | | |||
445 | #expression=equalityExpression @ BIT_AND | 450 | #expression=equalityExpression @ BIT_AND | ||
446 | -> bitAndExpression ;; | 451 | -> bitAndExpression ;; | ||
447 | 452 | | |||
448 | expression=relationalExpression | 453 | expression=relationalExpression | ||
449 | (#additionalExpression=equalityExpressionRest)* | 454 | (#additionalExpression=equalityExpressionRest)* | ||
450 | -> equalityExpression ;; | 455 | -> equalityExpression ;; | ||
451 | 456 | | |||
452 | ( IS_EQUAL | IS_NOT_EQUAL | IS_IDENTICAL | IS_NOT_IDENTICAL ) | 457 | ( IS_EQUAL | IS_NOT_EQUAL | IS_IDENTICAL | IS_NOT_IDENTICAL | SPACESHIP ) | ||
453 | expression=relationalExpression | 458 | expression=relationalExpression | ||
454 | -> equalityExpressionRest ;; | 459 | -> equalityExpressionRest ;; | ||
455 | 460 | | |||
456 | 461 | | |||
457 | expression=shiftExpression | 462 | expression=shiftExpression | ||
458 | ( (#additionalExpression=relationalExpressionRest)+ | 463 | ( (#additionalExpression=relationalExpressionRest)+ | ||
459 | --instanceof as in java.g (correct??) | 464 | --instanceof as in java.g (correct??) | ||
460 | | INSTANCEOF instanceofType=classNameReference | 465 | | INSTANCEOF instanceofType=classNameReference | ||
▲ Show 20 Lines • Show All 777 Lines • Show Last 20 Lines |