summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2011-12-11 23:00:45 -0700
committerMike Buland <eichlan@xagasoft.com>2011-12-11 23:00:45 -0700
commitac58dc8822b154a2ce51cc1b1317bc5e57ebf655 (patch)
treed9f7c95785720d1c1a3fce92c080e3021328c3ef /src
parent7c90fe68b557d32b65955ffd18e2e79585a7282b (diff)
downloadstage-ac58dc8822b154a2ce51cc1b1317bc5e57ebf655.tar.gz
stage-ac58dc8822b154a2ce51cc1b1317bc5e57ebf655.tar.bz2
stage-ac58dc8822b154a2ce51cc1b1317bc5e57ebf655.tar.xz
stage-ac58dc8822b154a2ce51cc1b1317bc5e57ebf655.zip
I think I've narrowed down how commands will work
It's kinda' cool for the most part, there will have to be some ways of referencing them later. Basically, there are global commands and situation commands. With any luck, it'll just work.
Diffstat (limited to 'src')
-rw-r--r--src/parser.l3
-rw-r--r--src/parser.y10
2 files changed, 12 insertions, 1 deletions
diff --git a/src/parser.l b/src/parser.l
index dff6507..59a0358 100644
--- a/src/parser.l
+++ b/src/parser.l
@@ -11,7 +11,7 @@
11%x dqstr tdqstr tsqstr 11%x dqstr tdqstr tsqstr
12%% 12%%
13 13
14[-{}<>=+/*,();] { return yytext[0]; } 14[-{}<>=+/*,();:] { return yytext[0]; }
15 15
16game { return tokGame; } 16game { return tokGame; }
17function { return tokFunction; } 17function { return tokFunction; }
@@ -25,6 +25,7 @@ then { return tokThen; }
25else { return tokElse; } 25else { return tokElse; }
26command { return tokCommand; } 26command { return tokCommand; }
27goto { return tokGoto; } 27goto { return tokGoto; }
28not { return tokNot; }
28 29
29true { yylval.bValue = true; return tokBool; } 30true { yylval.bValue = true; return tokBool; }
30false { yylval.bValue = false; return tokBool; } 31false { yylval.bValue = false; return tokBool; }
diff --git a/src/parser.y b/src/parser.y
index 9fb2be9..7242df0 100644
--- a/src/parser.y
+++ b/src/parser.y
@@ -24,6 +24,7 @@ void yyerror( const char *error ) { printf("%s\n", error ); }
24%token tokIf 24%token tokIf
25%token tokThen 25%token tokThen
26%token tokElse 26%token tokElse
27%token tokNot
27%token tokCommand 28%token tokCommand
28%token <sValue> tokSituationName 29%token <sValue> tokSituationName
29%token <sValue> tokIdent 30%token <sValue> tokIdent
@@ -54,6 +55,7 @@ gameExprList:
54 ; 55 ;
55 56
56cmpltGameExpr: gameExpr ';' 57cmpltGameExpr: gameExpr ';'
58 | commandDecl
57 ; 59 ;
58 60
59gameExpr: tokIdent '=' expr 61gameExpr: tokIdent '=' expr
@@ -103,6 +105,14 @@ listValues: expr
103dictValues: expr ':' expr 105dictValues: expr ':' expr
104 | dictValues ',' expr ':' expr 106 | dictValues ',' expr ':' expr
105 ; 107 ;
108
109commandDecl: tokCommand ':' tokString commandParamList '{' '}'
110 ;
111
112commandParamList:
113 | commandParamList tokString
114 | commandParamList tokIdent
115 ;
106%% 116%%
107 117
108int main() 118int main()