]> Joshua Wise's Git repositories - snipe.git/blobdiff - parse/l5.grm
Add strings to type system and parser/lexer
[snipe.git] / parse / l5.grm
index 7195271967c36fc6e62d3c8e700402ba9966bdc8..39f33cd2ad7cb5d1e271a75c7f13136ea4ce7ebd 100644 (file)
@@ -35,6 +35,7 @@ fun make_lval (A.Var(id)) ext = id
  | SEMI
  | INTNUM of Word32.word
  | IDENT of Symbol.symbol
+ | STRING of string
  | RETURN
  | PLUS | MINUS | STAR | SLASH | PERCENT | LSH | RSH | LOGOR | LOGAND | BITAND | BITXOR | BITOR | BITNOT | BANG
  | ASSIGN | PLUSEQ | MINUSEQ | STAREQ | SLASHEQ | PERCENTEQ | LSHEQ | RSHEQ | BITANDEQ | BITXOREQ | BITOREQ
@@ -43,7 +44,7 @@ fun make_lval (A.Var(id)) ext = id
  | LBRACE | RBRACE
  | LPAREN | RPAREN
  | UNARY | ASNOP (* dummy *)
- | EXTERN | VAR | INT | QUESTION | COLON | COMMA | STRUCT | NULL | LBRACKET | RBRACKET | ARROW | DOT | NEW
+ | EXTERN | VAR | INT | TSTRING | QUESTION | COLON | COMMA | STRUCT | NULL | LBRACKET | RBRACKET | ARROW | DOT | NEW
  | PLUSPLUS | MINUSMINUS
 
 %nonterm 
@@ -103,6 +104,7 @@ programx   : decls                  (decls)
            | programx function      (AUP.append_function programx function)
 
 vtype      : INT                    (T.Int)
+           | TSTRING                (T.String)
            | IDENT                  (T.Typedef IDENT)
            | vtype STAR             (T.Pointer vtype)
            | vtype LBRACKET RBRACKET
@@ -184,6 +186,7 @@ block      : stm                    ([stm])
 
 exp        : LPAREN exp RPAREN      (exp)
            | INTNUM                 (mark (A.ConstExp(INTNUM),(INTNUMleft,INTNUMright)))
+           | STRING                 (mark (A.StringExp(STRING),(STRINGleft,STRINGright)))
            | IDENT                  (mark (A.Var(IDENT), (IDENTleft,IDENTright)))
            | exp DOT IDENT          (mark (A.Member(exp, IDENT), (expleft, IDENTright)))
            | exp ARROW IDENT        (mark (A.DerefMember(exp, IDENT), (expleft, IDENTright)))
This page took 0.022495 seconds and 4 git commands to generate.