Changeset 2329

Show
Ignore:
Timestamp:
07/22/08 11:43:59 (4 months ago)
Author:
ryanc
Message:

added native grammars to parser, astgen, library

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/syntax2/Library/FortressSyntax.fsi

    r2284 r2329  
    2424   extend the nonterminal? *) 
    2525 
    26   grammar Compilation 
     26  native grammar Compilation 
    2727    File : CompilationUnit 
    2828    CompilationUnit : CompilationUnit 
     
    3636 
    3737 
    38 (* We should move all declarations together in the declaration grammar *) 
    39   grammar Declaration  
     38(* We should move all declarations together in the declaration native grammar *) 
     39  native grammar Declaration  
    4040      Decls : List[\Decl\] 
    4141      Decl : List[\Decl\] 
     
    4444  end 
    4545 
    46   grammar TraitObject (* rename to TraitsAndObjectDecls *) 
     46  native grammar TraitObject (* rename to TraitsAndObjectDecls *) 
    4747    TraitDecl : TraitDecl 
    4848    AbsTraitDecl : AbsTraitDecl 
     
    5151  end 
    5252 
    53   grammar Function 
     53  native grammar Function 
    5454    FnDecl : Decl 
    5555    FnSig : AbsFnDecl 
     
    5757  end 
    5858 
    59   grammar Method 
     59  native grammar Method 
    6060    MdDecl : FnAbsDeclOrDecl 
    6161    MdDef : FnDecl 
     
    6565 
    6666  (* We should collapse Expression, NoNewlineExpr, LocalVarFnDecl *)   
    67   grammar Expression  
     67  native grammar Expression  
    6868      Expr : Expr 
    6969  end 
    7070 
    71   grammar NoNewlineExpr 
     71  native grammar NoNewlineExpr 
    7272      Expr : Expr 
    7373  end 
    7474 
    75   grammar LocalVarFnDecl 
     75  native grammar LocalVarFnDecl 
    7676    LocalVarFnDecl : LetExpr 
    7777    LocalFnDecl : FnDef 
     
    7979  end 
    8080 
    81   grammar Variable 
     81  native grammar Variable 
    8282    VarDecl : VarDecl 
    8383    AbsVarDecl : AbsVarDecl 
    8484  end 
    8585 
    86   grammar AbsField 
     86  native grammar AbsField 
    8787    AbsFldDecl : AbsVarDecl 
    8888  end 
    8989  
    90   grammar Field 
     90  native grammar Field 
    9191    FldDecl : VarDecl 
    9292  end 
    9393 
    94   grammar OtherDecl 
     94  native grammar OtherDecl 
    9595    DimUnitDecl : List[\DimUnitDecl\] 
    9696    TypeAlias : TypeAlias 
     
    9999  end 
    100100 
    101 (*   grammar Spacing *) 
     101(*   native grammar Spacing *) 
    102102(*     w : () *) 
    103103(*     wr : () *) 
     
    106106(*   end *) 
    107107 
    108   grammar Parameter 
     108  native grammar Parameter 
    109109    ValParam : List[\Param\] 
    110110    AbsValParam : List[\Param\] 
     
    113113  end 
    114114 
    115   grammar Identifier  
     115  native grammar Identifier  
    116116    Id : Id 
    117117    BindId : Id 
     
    122122  end 
    123123 
    124   grammar Symbol 
     124  native grammar Symbol 
    125125    Encloser : Op 
    126126    LeftEncloser : Op 
     
    133133  end 
    134134 
    135   grammar Syntax 
     135  native grammar Syntax 
    136136    GrammarDef : GrammarDecl 
    137137    NonterminalDef : GrammarMemberDecl 
     
    142142  end 
    143143 
    144   grammar Type 
     144  native grammar Type 
    145145    Type : BaseType 
    146146    TupleType : TupleType 
     
    150150  end 
    151151 
    152   grammar Unicode 
     152  native grammar Unicode 
    153153    UnicodeIdStart : String 
    154154    UnicodeIdRest : String     
    155155  end 
    156156 
    157   grammar Literal  
     157  native grammar Literal  
    158158      LiteralExpr : Expr 
    159159  end 
  • branches/syntax2/ProjectFortress/astgen/Fortress.ast

    r2314 r2329  
    528528             * grammar definition in grammar declarations 
    529529             */ 
    530             GrammarDef(List<GrammarMemberDecl> members, List<TransformerDecl> transformers); 
     530            GrammarDef(List<GrammarMemberDecl> members, List<TransformerDecl> transformers,  
     531                       boolean native = false); 
    531532        /** 
    532533         * grammar member (nonterminal or terminal) declaration 
  • branches/syntax2/ProjectFortress/src/com/sun/fortress/parser/Syntax.rats

    r2280 r2329  
    5555/* GrammarDef ::= grammar w id w GrammarExtends? (br NonterminalDef)* w end */ 
    5656public GrammarDecl GrammarDef = 
    57      grammar w a1:Id a2:(w GrammarExtends)? a3s:(br NonterminalDef)* w end 
     57     native w grammar w a1:Id a3s:(br NonterminalDecl)* w end 
     58     { List<Id> extendedGrammars = Collections.<Id>emptyList(); 
     59       yyValue = new GrammarDef(createSpan(yyStart,yyCount), a1, extendedGrammars, 
     60                                a3s.list(), 
     61                                new LinkedList<TransformerDecl>(), 
     62                                /*native*/ true); } 
     63   / grammar w a1:Id a2:(w GrammarExtends)? a3s:(br NonterminalDef)* w end 
    5864     { List<Id> ids = new ArrayList<Id>(); 
    5965       if ( a2 == null) ids = Collections.<Id>emptyList(); 
     
    8995        syntaxDefs.add(0, a4); 
    9096        yyValue = new NonterminalDef(createSpan(yyStart,yyCount), header, astType1, syntaxDefs); } 
    91     /  header:NonterminalHeader w void:colon w astType:TraitType 
    92       { Option<BaseType> astType1 = Option.none(); 
    93         if (astType != null) astType1 = Option.some(astType); 
    94         List<SyntaxDef> syntaxDefs = Collections.<SyntaxDef>emptyList(); 
    95         yyValue = new NonterminalDef(createSpan(yyStart,yyCount), header, astType1, syntaxDefs); } 
    96      / header:NonterminalHeader w void:bar w astType:TraitType 
     97    /  yyValue:NonterminalDecl 
     98    /  header:NonterminalHeader w void:bar w astType:TraitType 
    9799      { Option<BaseType> astType1 = Option.none(); 
    98100        if (astType != null) astType1 = Option.some(astType); 
    99101        List<SyntaxDef> syntaxDefs = Collections.<SyntaxDef>emptyList(); 
    100102        yyValue = new NonterminalExtensionDef(createSpan(yyStart,yyCount), header, astType1, syntaxDefs); }; 
     103 
     104/* Only nonterminal decls are allowed within native grammars */ 
     105private GrammarMemberDecl NonterminalDecl = 
     106       header:NonterminalHeader w void:colon w astType:TraitType 
     107      { Option<BaseType> astType1 = Option.none(); 
     108        if (astType != null) astType1 = Option.some(astType); 
     109        List<SyntaxDef> syntaxDefs = Collections.<SyntaxDef>emptyList(); 
     110        yyValue = new NonterminalDef(createSpan(yyStart,yyCount), header, astType1, syntaxDefs); }; 
    101111 
    102112private NonterminalHeader NonterminalHeader =