1 package fri.patterns.interpreter.parsergenerator.parsertables; 2 3 import java.util.Hashtable ; 4 import fri.patterns.interpreter.parsergenerator.syntax.Syntax; 5 6 15 16 public class LRParserTables extends SLRParserTables 17 { 18 19 public LRParserTables(Syntax syntax) 20 throws ParserBuildException 21 { 22 super(syntax); 23 } 24 25 26 protected LRSyntaxNode createStartNode(Nullable nullable, FirstSets firstSets) { 27 return new LRSyntaxNode(nullable, firstSets); 28 } 29 30 34 protected void init() 35 throws ParserBuildException 36 { 37 Nullable nullable = new Nullable(syntax, nonterminals); 38 firstSets = new FirstSets(syntax, nullable, nonterminals); 39 40 syntaxNodes = createStartNode(nullable, firstSets).build(syntax, syntaxNodes, new Hashtable ()); 41 42 gotoTable = generateGoto(syntaxNodes); 43 44 parseTable = generateParseAction(syntaxNodes); 45 } 46 47 48 49 50 public static void main(String [] args) { 51 String [][] syntax = { 52 { "S", "L", "'='", "R" }, 53 { "S", "R" }, 54 { "L", "'*'", "R" }, 55 { "L", "'id'" }, 56 { "R", "L", }, 57 }; 58 59 try { 60 LRParserTables p = new LRParserTables(new Syntax(syntax)); 61 p.dump(System.err); 62 } 63 catch (Exception e) { 64 e.printStackTrace(); 65 } 66 } 67 68 } 69 70 | Popular Tags |