Changeset 2329
- Timestamp:
- 07/22/08 11:43:59 (4 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/syntax2/Library/FortressSyntax.fsi
r2284 r2329 24 24 extend the nonterminal? *) 25 25 26 grammar Compilation26 native grammar Compilation 27 27 File : CompilationUnit 28 28 CompilationUnit : CompilationUnit … … 36 36 37 37 38 (* We should move all declarations together in the declaration grammar *)39 grammar Declaration38 (* We should move all declarations together in the declaration native grammar *) 39 native grammar Declaration 40 40 Decls : List[\Decl\] 41 41 Decl : List[\Decl\] … … 44 44 end 45 45 46 grammar TraitObject (* rename to TraitsAndObjectDecls *)46 native grammar TraitObject (* rename to TraitsAndObjectDecls *) 47 47 TraitDecl : TraitDecl 48 48 AbsTraitDecl : AbsTraitDecl … … 51 51 end 52 52 53 grammar Function53 native grammar Function 54 54 FnDecl : Decl 55 55 FnSig : AbsFnDecl … … 57 57 end 58 58 59 grammar Method59 native grammar Method 60 60 MdDecl : FnAbsDeclOrDecl 61 61 MdDef : FnDecl … … 65 65 66 66 (* We should collapse Expression, NoNewlineExpr, LocalVarFnDecl *) 67 grammar Expression67 native grammar Expression 68 68 Expr : Expr 69 69 end 70 70 71 grammar NoNewlineExpr71 native grammar NoNewlineExpr 72 72 Expr : Expr 73 73 end 74 74 75 grammar LocalVarFnDecl75 native grammar LocalVarFnDecl 76 76 LocalVarFnDecl : LetExpr 77 77 LocalFnDecl : FnDef … … 79 79 end 80 80 81 grammar Variable81 native grammar Variable 82 82 VarDecl : VarDecl 83 83 AbsVarDecl : AbsVarDecl 84 84 end 85 85 86 grammar AbsField86 native grammar AbsField 87 87 AbsFldDecl : AbsVarDecl 88 88 end 89 89 90 grammar Field90 native grammar Field 91 91 FldDecl : VarDecl 92 92 end 93 93 94 grammar OtherDecl94 native grammar OtherDecl 95 95 DimUnitDecl : List[\DimUnitDecl\] 96 96 TypeAlias : TypeAlias … … 99 99 end 100 100 101 (* grammar Spacing *)101 (* native grammar Spacing *) 102 102 (* w : () *) 103 103 (* wr : () *) … … 106 106 (* end *) 107 107 108 grammar Parameter108 native grammar Parameter 109 109 ValParam : List[\Param\] 110 110 AbsValParam : List[\Param\] … … 113 113 end 114 114 115 grammar Identifier115 native grammar Identifier 116 116 Id : Id 117 117 BindId : Id … … 122 122 end 123 123 124 grammar Symbol124 native grammar Symbol 125 125 Encloser : Op 126 126 LeftEncloser : Op … … 133 133 end 134 134 135 grammar Syntax135 native grammar Syntax 136 136 GrammarDef : GrammarDecl 137 137 NonterminalDef : GrammarMemberDecl … … 142 142 end 143 143 144 grammar Type144 native grammar Type 145 145 Type : BaseType 146 146 TupleType : TupleType … … 150 150 end 151 151 152 grammar Unicode152 native grammar Unicode 153 153 UnicodeIdStart : String 154 154 UnicodeIdRest : String 155 155 end 156 156 157 grammar Literal157 native grammar Literal 158 158 LiteralExpr : Expr 159 159 end branches/syntax2/ProjectFortress/astgen/Fortress.ast
r2314 r2329 528 528 * grammar definition in grammar declarations 529 529 */ 530 GrammarDef(List<GrammarMemberDecl> members, List<TransformerDecl> transformers); 530 GrammarDef(List<GrammarMemberDecl> members, List<TransformerDecl> transformers, 531 boolean native = false); 531 532 /** 532 533 * grammar member (nonterminal or terminal) declaration branches/syntax2/ProjectFortress/src/com/sun/fortress/parser/Syntax.rats
r2280 r2329 55 55 /* GrammarDef ::= grammar w id w GrammarExtends? (br NonterminalDef)* w end */ 56 56 public 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 58 64 { List<Id> ids = new ArrayList<Id>(); 59 65 if ( a2 == null) ids = Collections.<Id>emptyList(); … … 89 95 syntaxDefs.add(0, a4); 90 96 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 97 99 { Option<BaseType> astType1 = Option.none(); 98 100 if (astType != null) astType1 = Option.some(astType); 99 101 List<SyntaxDef> syntaxDefs = Collections.<SyntaxDef>emptyList(); 100 102 yyValue = new NonterminalExtensionDef(createSpan(yyStart,yyCount), header, astType1, syntaxDefs); }; 103 104 /* Only nonterminal decls are allowed within native grammars */ 105 private 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); }; 101 111 102 112 private NonterminalHeader NonterminalHeader =
