Selaa lähdekoodia

Add math assignment operators

pull/1/head
Max Brunsfeld 11 vuotta sitten
vanhempi
commit
cdb08d5aff
3 muutettua tiedostoa jossa 2098 lisäystä ja 1546 poistoa
  1. +6
    -4
      grammar.coffee
  2. +9
    -1
      grammar_test/expressions.txt
  3. +2083
    -1541
      src/parser.c

+ 6
- 4
grammar.coffee Näytä tiedosto

@ -182,9 +182,6 @@ module.exports =
var_assignment: -> seq(@type_expression, "=", @expression)
type_modifier: -> choice(
keyword("const"))
expression: -> choice(
@bool_op,
@math_op,
@ -248,7 +245,12 @@ module.exports =
@field_access,
@deref_field_access,
@subscript_access),
"=",
choice(
"=",
"+=",
"-=",
"*=",
"/="),
@expression))
compound_literal: -> seq(

+ 9
- 1
grammar_test/expressions.txt Näytä tiedosto

@ -105,6 +105,10 @@ int main() {
d.e = 3;
f->g = 4;
h[i] = j;
k += l;
m -= o;
n *= p;
q /= r;
}
---
@ -115,7 +119,11 @@ int main() {
(expression_statement (assignment (identifier) (assignment (deref (identifier)) (number))))
(expression_statement (assignment (field_access (identifier) (identifier)) (number)))
(expression_statement (assignment (deref_field_access (identifier) (identifier)) (number)))
(expression_statement (assignment (subscript_access (identifier) (identifier)) (identifier)))))
(expression_statement (assignment (subscript_access (identifier) (identifier)) (identifier)))
(expression_statement (assignment (identifier) (identifier)))
(expression_statement (assignment (identifier) (identifier)))
(expression_statement (assignment (identifier) (identifier)))
(expression_statement (assignment (identifier) (identifier)))))
============================================
Pointer operations

+ 2083
- 1541
src/parser.c
File diff suppressed because it is too large
Näytä tiedosto


Ladataan…
Peruuta
Tallenna