From e4b9d8b7b4eea10735e24385abfd531be6ae8379 Mon Sep 17 00:00:00 2001 From: Filip Pascuti Date: Tue, 23 Nov 2021 13:53:38 +0200 Subject: [PATCH] g2.txt rough version --- .DS_Store | Bin 0 -> 8196 bytes Grammar/g2.txt | 109 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 103 insertions(+), 6 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..abffdfc2881dc600d461c5228d5aae4c81938242 GIT binary patch literal 8196 zcmeHML2uJA82#LKUBZN@21w(8h{Sa&E!EHvm#*7D9Js6q4uDFsmM&TrPiaawO_O?u z-@so$9Qh&eUpT@0Y;Q`_42cV3!j|mk*zeit^VhgeiAZ$D{U*^05jn_=wIvhg3y!=Gx@ zauRB0jALdN=7b{5!9#e8PNJ>Rmev95z`O%|cCS#Kh7?koJHKzBul`ddCA@OR19wO< zNlIvt(|pcp7U(f;Ko?Rx%M`bB%&KDEFXVp6ahK^GkI45-1L~1aW7H%apq3)n>5z_d z^Zm$;u}DvF|2{OVN@m%m;qTeOWOQiWbbJjCqi~cq8s9~!Tv@0tI*zmCyy@=ANjLS= z@u=e`ulVY@lu>Y2_k$PVVA8AI*pzYVhw&g$g0MdT<@L)j?#oF>j^qAFX}h|^ab34p zyLEE1)@rPJtp|yZ0XL^!B5JSh8tI!aOnQs=huiKcbd1 z;e9uWBN_9DXO&A4>^*|byRbAxEf*rCZ(wCZR73cFyH)Fj6*)FaKM$ck9CNP_$uf# zd=3E*nXzqfs*#(xUG2g^yZ^HxHdzNQkppFYuPc21-@f?$|0ViF_ExO})`35DKvcH6 zTOFv>u3n(#UEV`}i_D36Q;kZ3V&;bcuFwB4MBM|GHEn}ajc7r#F9MVewy+NTRR?|n D@<=Fj literal 0 HcmV?d00001 diff --git a/Grammar/g2.txt b/Grammar/g2.txt index 3bcae9b..2882d29 100644 --- a/Grammar/g2.txt +++ b/Grammar/g2.txt @@ -1,27 +1,124 @@ program -int,char,string,; -program +0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,int,char,string,;,(,),[,],{,},+,-,*,/,%,&&,||,>,<,>=,<=,==,!=,if,else,while, +program,statement_list,statement,simple_statement,compound_statement,assignment_statement,declaration_statement,io_statement,if,while_statement,primitive_type,list_type,type,arithmetic_operator,relational_operator,expression,term,factor,identifier,condition,word,number,nonZeroDigit,digit,letter + program -> statement_list + statement_list -> statement statement_list statement_list -> statement + statement -> simple_statement statement -> compound_statement + simple_statement -> assignment_statement ; simple_statement -> declaration_statement ; simple_statement -> io_statement ; + compound_statement -> if_statement compound_statement -> while_statement + +primitive_type -> int +primitive_type -> char +primitive_type -> string + +list_type -> primitive_type [ number ] + +type -> primitive_type +type -> list_type + arithmetic_operator -> + arithmetic_operator -> - arithmetic_operator -> * arithmetic_operator -> / arithmetic_operator -> % -expression -> constant -expression -> identifier -expression -> identifier [ number ] -expression -> constant +relational_operator = && +relational_operator = || +relational_operator = > +relational_operator = < +relational_operator = >= +relational_operator = <= +relational_operator = == +relational_operator = != + +expression -> expression + term +expression -> term +expression -> expression - term +term -> term * factor +term -> factor +term -> term / factor +term -> term mod factor +factor -> ( expression ) +factor -> identifier + +expression -> term + expression +expression -> term - expression +expression -> term +term -> factor * term +term -> factor / term +term -> factor +factor -> identifier +factor -> ( expression ) + +condition -> expression relational_operator expression + +declaration_statement -> type identifier +declaration_statement -> type identifier = expression + +io_statement -> identifier = readInt ( ) +io_statement -> identifier = read ( ) +io_statement -> print ( expression ) + +if_statement -> if ( condition ) { statement_list } +if_statement -> if ( condition ) { statement_list } else { statement_list } + +while_statement -> while ( condition ) { statement_list } + +identifier -> word +identifier -> word number + +word -> letter +word -> letter word +letter -> a +letter -> b +letter -> c +letter -> d +letter -> e +letter -> f +letter -> g +letter -> h +letter -> i +letter -> j +letter -> k +letter -> l +letter -> m +letter -> n +letter -> o +letter -> p +letter -> q +letter -> r +letter -> s +letter -> t +letter -> u +letter -> v +letter -> w +letter -> x +letter -> y +letter -> z +number -> digit +number -> nonZeroDigit number +nonZeroDigit -> 1 +nonZeroDigit -> 2 +nonZeroDigit -> 3 +nonZeroDigit -> 4 +nonZeroDigit -> 5 +nonZeroDigit -> 6 +nonZeroDigit -> 7 +nonZeroDigit -> 8 +nonZeroDigit -> 9 +digit -> 0 +digit -> nonZeroDigit