Skip to content
Snippets Groups Projects
Commit 3a476959 authored by Tsegelnik Nikita's avatar Tsegelnik Nikita
Browse files

small improvement in the grammar

parent 6faf4999
No related branches found
No related tags found
1 merge request!19New version
......@@ -4,10 +4,10 @@
// Entry point to the parsing
// Any type of parsing rules is *sequence*
sequence: ( operation | "(" operation ")" | transformation | variable | zero | unity | assignment )+
sequence: ( operation | "(" operation ")" | object | assignment )+
assignment: variable "=" (variable|operation_v)
| transformation "=" (transformation|operation_t|zero|unity)
| transformation "=" (transfobject|operation_t)
// Types of operations
// *operation* is hidden node
......@@ -31,38 +31,41 @@ assignment: variable "=" (variable|operation_v)
//
sum_v: (variable|"("operation_v")"|operation_v) "+" (variable|"("operation_v")"|operation_v)
sum_t: (transformation|"("operation_t")"|operation_t) "+" (transformation|variable|"("operation_t")"|"("operation_v")"|operation_t|operation_v)
| (variable|"("operation_v")"|operation_v) "+" (transformation|"("operation_t")"|operation_t)
sum_t: (transfobject|"("operation_t")"|operation_t) "+" (object|"("operation_t")"|"("operation_v")"|operation_t|operation_v)
| (variable|"("operation_v")"|operation_v) "+" (transfobject|"("operation_t")"|operation_t)
product_v: (variable|"("operation_v")"|product_v|division_v|mxproduct_v) "*" (variable|"("operation_v")"|product_v|division_v|mxproduct_v)
product_t: (transformation|"("operation_t")"|product_t|division_t|mxproduct_t|zero|unity) "*" (transformation|variable|"("operation_t")"|product_t|division_t|mxproduct_t|"("operation_v")"|product_v|division_v|mxproduct_v|zero|unity)
| (variable|"("operation_v")"|product_v|division_v|mxproduct_v) "*" (transformation|"("operation_t")"|product_t|division_t|mxproduct_t)
product_t: (transfobject|"("operation_t")"|product_t|division_t|mxproduct_t) "*" (object|"("operation_t")"|product_t|division_t|mxproduct_t|"("operation_v")"|product_v|division_v|mxproduct_v)
| (variable|"("operation_v")"|product_v|division_v|mxproduct_v) "*" (transfobject|"("operation_t")"|product_t|division_t|mxproduct_t)
division_v: (variable|"("operation_v")"|mxproduct_v|product_v|division_v) "/" (variable|"("operation_v")"|mxproduct_v|product_v|division_v)
division_t: (transformation|unity|zero|"("operation_t")"|division_t|product_t|mxproduct_t) "/" (transformation|variable|unity|zero|"("operation_v")"|division_t|division_v|mxproduct_v|product_v|mxproduct_t|product_t)
| (variable|"("operation_v")"|division_v|product_v|mxproduct_v) "/" (transformation|unity|zero|"("operation_t")"|division_t|mxproduct_t|product_t)
division_t: (transformation|unity|zero|"("operation_t")"|division_t|product_t|mxproduct_t) "/" (object|"("operation_v")"|division_t|division_v|mxproduct_v|product_v|mxproduct_t|product_t)
| (variable|"("operation_v")"|division_v|product_v|mxproduct_v) "/" (transfobject|"("operation_t")"|division_t|mxproduct_t|product_t)
subtraction_v: (variable|subtraction_v|operation_v|"("operation_v")") "-" (variable|subtraction_v|operation_v|"("operation_v")")
subtraction_t: (transformation|zero|unity|subtraction_t|operation_t|"("operation_t")") "-" (variable|zero|unity|transformation|subtraction_t|operation_t|"("operation_t")"|subtraction_v|operation_v|"("operation_v")")
| (variable|subtraction_v|operation_v|"("operation_v")") "-" (transformation|subtraction_t|operation_t|"("operation_t")")
subtraction_t: (transfobject|subtraction_t|operation_t|"("operation_t")") "-" (object|subtraction_t|operation_t|"("operation_t")"|subtraction_v|operation_v|"("operation_v")")
| (variable|subtraction_v|operation_v|"("operation_v")") "-" (transfobject|subtraction_t|operation_t|"("operation_t")")
mxproduct_v: (variable|mxproduct_v) "@" (variable|mxproduct_v)
| (variable|mxproduct_v) "@" "(" operation_v ")"
| "(" operation_v ")" "@" (variable|mxproduct_v)
mxproduct_t: (transformation|mxproduct_t|zero|unity) "@" (transformation|zero|unity|variable|mxproduct_t)
| (transformation|mxproduct_t) "@" "(" (operation_t|operation_v) ")"
| "(" (operation_t|operation_v) ")" "@" (transformation|mxproduct_t)
| variable "@" (transformation|mxproduct_t|"("operation_t")")
mxproduct_t: (transfobject|mxproduct_t) "@" (transfobject|variable|mxproduct_t)
| (transfobject|mxproduct_t) "@" "(" (operation_t|operation_v) ")"
| "(" (operation_t|operation_v) ")" "@" (transfobject|mxproduct_t)
| variable "@" (transfobject|mxproduct_t|"("operation_t")")
| "(" operation_t ")" "@" variable
//
// Rules for the Tokens
//
?object.10: transfobject | variable
?transfobject.8: transformation | unity | zero
zero: ZERO
unity: UNITY
......@@ -72,7 +75,7 @@ variable: "(" [namespace] VARIABLE [index] ")" [label]
transformation: [newcall] [namespace] TRANSFORMATION [index|reduction] [label] ([ "|" ( "("[arg]")" |[arg] ) ] | ["("[arg]")"])
| "(" [newcall] [namespace] TRANSFORMATION [index|reduction] [label] ([ "|" ( "("[arg]")" |[arg] ) ] | ["("[arg]")"]) ")"
arg: (operation|"("operation")"|transformation|variable) ( "," (operation|"("operation")"|transformation|variable) )*
arg: (operation|"("operation")"|object) ( "," (operation|"("operation")"|object) )*
index: "[" _sep{INDEX, ","} "]"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment