private static ProjectSection GetProjectSection(LexicalAnalizer lexan) { ProjectSection ps = new ProjectSection(); lexan.Expect(Semantics.PROJECT_SECTION); lexan.MoveNext(); lexan.Expect(Semantics.OPEN_PARENTHESIS); lexan.MoveNext(); // Project Section Name lexan.Expect(Semantics.STRING_VALUE); ps.Name = lexan.Current.Value; lexan.MoveNext(); lexan.Expect(Semantics.CLOSE_PARENTHESIS); lexan.MoveNext(); lexan.Expect(Semantics.EQUALS); lexan.MoveNext(); // Project Section Name lexan.Expect(Semantics.STRING_VALUE); ps.Value = lexan.Current.Value; lexan.MoveNext(); lexan.Expect(Semantics.EOL); while (lexan.MoveNext()) { switch (lexan.Current.Token) { case Semantics.END_PROJECT_SECTION: return ps; case Semantics.STRING_VALUE: { lexan.Expect(Semantics.STRING_VALUE); string key = lexan.Current.Value; lexan.MoveNext(); lexan.Expect(Semantics.EQUALS); lexan.MoveNext(); lexan.ExpectQuotedOrString(); string value = lexan.Current.Value; ps.Map.Add(key.Trim(' ', '\n', '\t'), value); lexan.MoveNext(); lexan.Expect(Semantics.EOL); } break; case Semantics.QUOTED_STRING: { lexan.Expect(Semantics.QUOTED_STRING); string key = lexan.Current.Value; lexan.MoveNext(); lexan.Expect(Semantics.EQUALS); lexan.MoveNext(); lexan.ExpectQuotedOrString(); string value = lexan.Current.Value; ps.Map.Add(key.Trim(' ', '\n', '\t'), value); lexan.MoveNext(); lexan.Expect(Semantics.EOL); } break; case Semantics.EOL: break; default: throw new Exception("Invalid ProjectSection Entry!"); } } throw new Exception("Expecting EndProjectSection!"); }
private static GlobalSection GetGlobalSection(LexicalAnalizer lexan) { GlobalSection gs = new GlobalSection(); lexan.Expect(Semantics.GLOBAL_SECTION); lexan.MoveNext(); lexan.Expect(Semantics.OPEN_PARENTHESIS); lexan.MoveNext(); lexan.Expect(Semantics.STRING_VALUE); gs.Name = lexan.Current.Value; lexan.MoveNext(); lexan.Expect(Semantics.CLOSE_PARENTHESIS); lexan.MoveNext(); lexan.Expect(Semantics.EQUALS); lexan.MoveNext(); lexan.Expect(Semantics.STRING_VALUE); gs.Value = lexan.Current.Value; lexan.MoveNext(); lexan.Expect(Semantics.EOL); while (lexan.MoveNext()) { switch (lexan.Current.Token) { case Semantics.END_GLOBAL_SECTION: return(gs); case Semantics.STRING_VALUE: { lexan.Expect(Semantics.STRING_VALUE); string key = lexan.Current.Value; lexan.MoveNext(); lexan.Expect(Semantics.EQUALS); lexan.MoveNext(); lexan.ExpectQuotedOrString(); string value = lexan.Current.Value; gs.Map.Add(key.Trim(' ', '\n', '\t'), value); lexan.MoveNext(); lexan.Expect(Semantics.EOL); } break; case Semantics.QUOTED_STRING: { lexan.Expect(Semantics.QUOTED_STRING); string key = lexan.Current.Value; lexan.MoveNext(); lexan.Expect(Semantics.EQUALS); lexan.MoveNext(); lexan.ExpectQuotedOrString(); string value = lexan.Current.Value; gs.Map.Add(key.Trim(' ', '\n', '\t'), value); lexan.MoveNext(); lexan.Expect(Semantics.EOL); } break; case Semantics.EOL: break; default: throw new Exception("Invalid GlobalSection Entry!"); } } throw new Exception("Expecting EndGlobalSection!"); }