Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ea47cfa

Browse files
committed
Updated token list and added grammar definition
1 parent 0b52475 commit ea47cfa

2 files changed

Lines changed: 53 additions & 24 deletions

File tree

doc/grammar/grammar.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
group_list ::= group_declaration | group_declaration group_list
2+
group_declaration ::= GROUP IDENTIFIER BEGIN_TOKEN task_list END_TOKEN
3+
task_list ::= task_declaration | task_list
4+
task_declaration ::= TASK IDENTIFIER BEGIN_TOKEN data_section freq_section preq_section exec_section END_TOKEN
5+
data_section ::= DATA BEGIN_TOKEN variable_declaration_list END_TOKEN
6+
variable_declaration_list ::= variable_declaration | variable_declaration variable_declaration_list
7+
variable_declaration ::= identifier_list COLON type_definition ASSIGN_OP literal_value EOL
8+
literal_value ::= INTEGER | FLOAT
9+
type_definition ::= TYPE_INTEGER | TYPE_FLOAT
10+
freq_section ::= FREQ COLON time_declaration EOL
11+
time_declaration :: = INTEGER "s"|"m"|"h"
12+
preq_section ::= PREQ BEGIN_TOKEN prerequisite_declaration_list END_TOKEN
13+
prerequisite_declaration_list ::= boolean_expression | boolean_expression prerequisite_declaration_list
14+
boolean_expression ::= expression | expression boolean_operator expression EOL
15+
boolean_operator ::= GT | LT | GE | LE | EQ | NE
16+
exec_section ::= BEGIN_TOKEN statement_list END_TOKEN
17+
statement_list ::= statement | statement statement_list
18+
statement ::= assignment | expression | instrument_queue_push
19+
assignment ::= IDENTIFIER ASSIGN_OP expression | instrument_property ASSIGN_OP expression
20+
expression ::= factor | expression ADD factor | expression SUB factor | function_call | instrument_property | instrument_queue_pull
21+
factor ::= term | factor MUL term | factor DIV term
22+
term ::= INTEGER | FLOAT | IDENTIFIER | OP expression CP
23+
function_call ::= IDENTIFIER OP expression CP
24+
instrument_property ::= IDENTIFIER DOT IDENTIFIER
25+
instrument_queue_pull ::= IDENTIFIER DOT IDENTIFIER DOT PULL OP expression CP
26+
instrument_queue_push ::= IDENTIFIER DOT IDENTIFIER DOT PUSH OP expression CP

doc/grammar/tokens.txt

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,30 @@
55
"(" { return OP; }
66
")" { return CP; }
77
";" { return EOL; }
8-
"," { return COMMA;}
9-
":" { return COLON;}
10-
"{" { return BEGIN_TOKEN;}
11-
"}" { return END_TOKEN;}
12-
"=" { return ASSIGN_OP;}
13-
">" { return GT;}
14-
"<" { return LT;}
15-
">=" { return GE;}
16-
"<=" { return LE;}
17-
"==" { return EQ;}
18-
"<>" { return NE;}
19-
"i32" { return TYPE_INTEGER;}
20-
"f32" { return TYPE_FLOAT;}
21-
"var" { return VAR;}
22-
"freq" { return FREQ;}
23-
"preq" { return PREQ;}
24-
"data" { return DATA;}
25-
"exec" { return EXEC;}
26-
"task" { return TASK;}
27-
"group" { return GROUP;}
28-
"return" { return RETURN;}
29-
[a-z][a-z0-9]* { return IDENTIFIER;}
30-
[-]?[1-9][0-9]*|[0-9] { return INTEGER;}
31-
[-]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)? { return FLOAT;}
8+
"," { return COMMA; }
9+
":" { return COLON; }
10+
"." { return DOT; }
11+
"{" { return BEGIN_TOKEN; }
12+
"}" { return END_TOKEN; }
13+
"=" { return ASSIGN_OP; }
14+
">" { return GT; }
15+
"<" { return LT; }
16+
">=" { return GE; }
17+
"<=" { return LE; }
18+
"==" { return EQ; }
19+
"<>" { return NE; }
20+
"i32" { return TYPE_INTEGER; }
21+
"f32" { return TYPE_FLOAT; }
22+
"var" { return VAR; }
23+
"freq" { return FREQ; }
24+
"preq" { return PREQ; }
25+
"data" { return DATA; }
26+
"exec" { return EXEC; }
27+
"task" { return TASK; }
28+
"push" { return PUSH; }
29+
"pull" { return PULL; }
30+
"group" { return GROUP; }
31+
"return" { return RETURN; }
32+
[a-z][a-z0-9]* { return IDENTIFIER; }
33+
[-]?[1-9][0-9]*|[0-9] { return INTEGER; }
34+
[-]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)? { return FLOAT; }

0 commit comments

Comments
 (0)