LLOOP Index | GSP Language | GSP Library | Framework Classes | Component Classes

minic.gsp

This is the verbatim text of the file "minic.gsp" part of the LLOOP package. The copyright remains with Michel MEHL. All rights reserved.



import cplusplus_comment;
import std;

symbol MINI_C 
 test 
 {{
   "big programme example" : pass file://examples/big.c file://examples/big_expanded.c
 }};

MINI_C ::= DeclList 'main' '(' ')' '{' InstructionBlock '}' 
{{
}}
| {{}}

BLOC::=  
{{ 
}}

SBLOC::= 
{{ 
}}


InstructionBlock ::= BLOC [ DeclList ] [ InstructionSet ] SBLOC
{{
}}

InstructionSet ::=  Instruction [ InstructionSet ]
{{
}}

Instruction ::= 'if' '(' BoolExpr ')' Instruction [ 'else' Instruction ]
{{
}}
| 'while' '(' BoolExpr ')' Instruction
{{
}}
| 'for' '(' Assignment ';' BoolExpr ';' Assignment ')' Instruction
{{
}}
| 'switch' '(' Expr ')' '{' CaseList '}'
{{
}}
| '{' InstructionBlock '}' 
{{
}}
| 'break' ';'
{{
}}
| 'return' '(' Expr ')' ';'
{{
}}
| 'read' '(' Expr ')' ';'
{{
}}
| 'write' '(' Expr ')' ';'
{{
}}
| Assignment ';'
{{
}}
| Expr ';'
{{
}}
| 'exit' '(' ')' ';'
{{
}}

FunctCallArgList ::=  Expr [ ',' FunctCallArgList ]
{{
}}

Assignment ::= Id '=' Expr
{{
}}

CaseList ::=  'case' '(' CaseValList ')' ':' Instruction [ CaseList ]
{{
}}

CaseValList::= Id [ CaseValList ]
{{
}}

Expr ::= ExprFinal '+' Expr 
{{
}}
| ExprFinal '-' Expr
{{
}}
| ExprFinal '*' Expr
{{
}}
| ExprFinal '/' Expr
{{
}}
| ExprFinal
{{
}}

ExprFinal ::=  /* '-' Expr  
{{
}}
| */ '(' Expr ')'
{{
}}
| Id [ '(' [ FunctCallArgList ] ')' ]
{{
}}


BoolExpr ::=   BoolFinal '||' BoolExpr
{{
}}
| BoolFinal '&&' BoolExpr
{{
}}
| BoolFinal
{{
}}

BoolFinal ::= '!' BoolExpr 
{{
}}
| '(' BoolExpr ')'
{{
}}
| Expr [ RelOp Expr ]
{{
}}


DeclList ::= VarDecl ';' [ DeclList ] 
{{
}}
| FuncHeadDecl '(' FunctAllArgsDecl ')''{' DeclList InstructionSet  '}' [ DeclList ]
{{
}}
| StructHeadDecl '{' DeclList '}' ';' [ DeclList ] 
{{
}}
| {{}}


VarDecl ::= VarType Id [  VarDecl ]
{{
}}
| ',' Id [ VarDecl ]
{{
}}
| {{}}

FuncHeadDecl ::= VarType Id
{{
}}

StructHeadDecl ::= 'struct' Id 
{{
}}

VarType ::= 'int'
{{
}}
| 'void'
{{
}}
| 'double'
{{
}}
| 'char'
{{
}}
| word [ '*' ]
{{
}}

RelOp::=  '<='
{{
}}
| '>='
{{
}}
| '=='
{{
}}
| '!='
{{
}}
| '>'
{{
}}
| '<'
{{
}}

Id ::= IdPath
{{
}}
| uint
{{
}}
| int
{{
}}
| double
{{
}}
| quote
{{
}}
/*
 | char
 {{
 }}
*/

IdPath ::= word [ '.' IdPath ]
{{
}}

FunctArgList ::=  [ FunctArgDecl [ ',' FunctArgList ] ]
{{
}}
	
FunctArgDecl ::= VarType Id
{{
}}

FunctAllArgsDecl ::= BLOC FunctArgList
{{
}}


This file is part of the LLOOP Reversible Object-Oriented Parser Generator. Copyright (c) 2005-2006 Michel MEHL, France. All rights reserved. LLOOP is distributed by the company ERSA SaRL.


Copyright (c) 2005-2006 Michel MEHL, Haguenau, France
LLOOP version 1.1