1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- --:** See error message in line 6
- -- parsing of Prof. Blikle small language
- --
- -- file ANALYSE.RIG
- --
- #analyse_program
- (. (* $rez !.:= #analyse_stmt * ';' ) [ ';' ] .)
- --:-----^
- --:** 323 UNEXPECTED SYMBOL (END OF '<<'-STATEMENT NOT FOUND)
- --:** **************************************************
- --:** **************************************************
- / RETURN $rez / ##
- #analyse_stmt
- $rez := ( #assignment ! #while_op ) / RETURN $rez/ ;;
- (* $R !.:= S'( $$ <> ';' ) *)
- / report << unrecognised statement $R ; FAIL /
- ##
- #assignment
- $var := #variable ':=' $E := #expression V'( $$ = ';' OR $$ = 'OD')
- / RETURN 'assignment_op' :: <. left_part: $var,
- right_part: $E .> / ##
- #while_op
- 'WHILE' $E := #expression 'DO'
- (* $body !.:= #analyse_stmt * ';' )
- 'OD'
- / RETURN 'while_op' :: <. condition: $E,
- body: $body .> / ##
- #expression
- $a1 := #arithm_expr
- [ '<' $a2 := #arithm_expr
- / RETURN '<' :: <. arg1: $a1, arg2: $a2 .>/ ]
- / RETURN $a1 / ##
- #arithm_expr
- $a1 := #term / RETURN $a1 / ;;
- '(' $a1 := #arithm_expr '+' $a2 := #arithm_expr ')'
- / RETURN '+' :: <. arg1: $a1, arg2: $a2 .> / ##
- #term
- $NUM / RETURN $NUM / ;;
- $rez := #variable /RETURN $rez / ##
- #variable
- $R := ( W ! V ! X ! Y ! Z ) / RETURN $R / ##
|