예제 #1
0
        public RuleCollection ParseFile()
        {
            RuleCollection res = new RuleCollection();

            while (!m_tokenizer.IsEof)
            {
                res.Rules.Add(ParseRule());
            }
            return(res);
        }
예제 #2
0
        static void Main(string[] args)
        {
            //var secs = (new DateTime(2009, 1, 1) - new DateTime(1970, 1, 1)).TotalSeconds;
            string inf  = args[0];
            string outf = args[1];
            string ns   = args[2];
            string cls  = args[3];

            using (StreamReader sr = new StreamReader(inf))
            {
                string         data   = sr.ReadToEnd();
                GramParser     parser = new GramParser(new GramTokenizer(new StringReader(data), new StringSliceProvider(data)));
                RuleCollection rules  = parser.ParseFile();
                ParserCompiler pc     = new ParserCompiler(rules);
                rules.Compile(pc);
                using (StreamWriter sw = new StreamWriter(outf))
                {
                    CSharpWriter csw = new CSharpWriter(sw);
                    csw.WriteLine("using DatAdmin;");
                    rules.GenCode(csw, ns, cls);
                }
            }
        }
예제 #3
0
 public ParserCompiler(RuleCollection rules)
 {
     Rules = rules;
 }