From e83a2f1f087ffff2b17d07dfb4a179f24f982567 Mon Sep 17 00:00:00 2001 From: josh Date: Tue, 12 Jan 2010 17:40:16 +0000 Subject: [PATCH] updated grammar a bit git-svn-id: svn://anubis/jtlc/trunk@5 f5bc74b8-7b62-4e90-9214-7121d538519f --- parser/parser.lex | 11 +++++++---- parser/parser.yy | 10 ++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/parser/parser.lex b/parser/parser.lex index 685e8a0..42b48b2 100644 --- a/parser/parser.lex +++ b/parser/parser.lex @@ -12,6 +12,7 @@ /* operators */ := return ASSIGN; +::= return DASSIGN; == return DEQUALS; \/ return DIVIDE; = return EQUALS; @@ -41,16 +42,16 @@ \) return RPAREN; /* literals */ --?[0-9]+ { +[0-9]+ { return INT_LITERAL; } --?0x[0-9]+ { +0x[0-9A-Fa-f]+ { return INT_LITERAL; } --?0b[01]+ { +0b[01]+ { return INT_LITERAL; } --?[0-9]*\.[0-9]+([eE][0-9]+)? { +[0-9]*\.[0-9]+([eE]-?[0-9]+)? { return REAL_LITERAL; } @@ -59,6 +60,8 @@ byte return BYTE; ubyte return UBYTE; char return CHAR; wchar return WCHAR; +short return SHORT; +ushort return USHORT; int return INT; uint return UINT; long return LONG; diff --git a/parser/parser.yy b/parser/parser.yy index 55ec6d7..6d73a5b 100644 --- a/parser/parser.yy +++ b/parser/parser.yy @@ -27,6 +27,7 @@ int yywrap() /* operators */ %token ASSIGN; +%token DASSIGN; %token DEQUALS; %token DIVIDE; %token EQUALS; @@ -64,6 +65,8 @@ int yywrap() %token UBYTE; %token CHAR; %token WCHAR; +%token SHORT; +%token USHORT; %token INT; %token UINT; %token LONG; @@ -114,7 +117,7 @@ import_name_more_more: IDENTIFIER import_name_more | STAR ; -function: type IDENTIFIER LPAREN parameter_list RPAREN LCURLY function_items RCURLY +function: IDENTIFIER LPAREN parameter_list RPAREN COLON type LCURLY function_items RCURLY ; function_items: /* empty */ @@ -133,6 +136,8 @@ primitive_type: BYTE | UBYTE | CHAR | WCHAR + | SHORT + | USHORT | INT | UINT | LONG @@ -152,7 +157,7 @@ struct_item: variable_declaration variable_declaration: variable_spec SEMICOLON; ; -variable_spec: type IDENTIFIER +variable_spec: IDENTIFIER COLON type ; ptr_type: type STAR @@ -179,6 +184,7 @@ expression: assign_expr ; assign_expr: lvalue ASSIGN expression + | lvalue DASSIGN expression ; lvalue: IDENTIFIER