public void VisitSemicolon(Semicolon semicolon) { // EMPTY }
void Start() { semicolon = this.GetComponent <Semicolon>(); }
private static NextToken ReadToken(this IEnumerable <CodeCharacter> code) { code = code.SkipWhile(c => c.IsWhitespace); if (!code.Any()) { var token = new EndOfFile(); return(new NextToken(token, () => ReadToken(code))); } var firstTokenChar = code.First(); if (firstTokenChar.IsStartOfIdentifier) { var identifier = code .TakeWhile(c => c.IsBodyOfIdentifier) .Aggregate("", (s, c) => s + c.Value); code = code.SkipWhile(c => c.IsBodyOfIdentifier); var token = KeywordTable.ContainsKey(identifier) ? KeywordTable[identifier].Invoke() as Token : new Identifier(); token.Value = identifier; token.LineNumber = firstTokenChar.LineNumber; token.LinePosition = firstTokenChar.LinePosition; return(new NextToken(token, () => ReadToken(code))); } if (firstTokenChar.IsDigit) { var number = code .TakeWhile(c => c.IsDigit) .Aggregate("", (s, c) => s + c.Value); code = code.Skip(number.Length); var token = new IntegerConstant(); token.Value = number; token.LineNumber = firstTokenChar.LineNumber; token.LinePosition = firstTokenChar.LinePosition; return(new NextToken(token, () => ReadToken(code))); } if (firstTokenChar.IsStartOfStringLiteral) { var stringLiteral = code .Skip(1) .TakeWhile(c => c.Value != '"') .Aggregate("\"", (s, c) => s + c.Value) + '"'; Debug.WriteLine(stringLiteral); code = code.Skip(stringLiteral.Length); var token = new StringLiteral(); token.Value = stringLiteral; token.LineNumber = firstTokenChar.LineNumber; token.LinePosition = firstTokenChar.LinePosition; return(new NextToken(token, () => ReadToken(code))); } var t = new InvalidToken() as Token; switch (firstTokenChar.Value) { case '(': t = new LeftParen(); break; case ')': t = new RightParen(); break; case '{': t = new LeftCurlyBrace(); break; case '}': t = new RightCurlyBrace(); break; case '[': t = new LeftSquareBracket(); break; case ']': t = new RightSquareBracket(); break; case ',': t = new Comma(); break; case '*': t = new Asterisk(); break; case ';': t = new Semicolon(); break; } code = code.Skip(1); t.Value = firstTokenChar.Value.ToString(); t.LineNumber = firstTokenChar.LineNumber; t.LinePosition = firstTokenChar.LinePosition; return(new NextToken(t, () => ReadToken(code))); }
protected void Awake() { instance = this; }