Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Unified Diff: petitparser/lib/src/smalltalk/grammar.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « petitparser/lib/src/reflection/transform.dart ('k') | petitparser/lib/test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: petitparser/lib/src/smalltalk/grammar.dart
diff --git a/petitparser/lib/src/smalltalk/grammar.dart b/petitparser/lib/src/smalltalk/grammar.dart
deleted file mode 100644
index 1f77c1e57c06f1a45e9a3a2a012aec2e632a8d45..0000000000000000000000000000000000000000
--- a/petitparser/lib/src/smalltalk/grammar.dart
+++ /dev/null
@@ -1,229 +0,0 @@
-part of smalltalk;
-
-/**
- * Smalltalk grammar.
- */
-class SmalltalkGrammar extends GrammarParser {
- SmalltalkGrammar() : super(new SmalltalkGrammarDefinition());
-}
-
-/**
- * Smalltalk grammar definition.
- */
-class SmalltalkGrammarDefinition extends GrammarDefinition {
-
- // the original implementation used a handwritten parser to
- // build special token objects
- token(input) {
- if (input is String) {
- input = input.length == 1 ? char(input) : string(input);
- }
- return input.token().trim(ref(spacer));
- }
-
- // the original implementation uses a handwritten parser to
- // efficiently consume whitespace and comments
- spacer() => whitespace()
- .or(ref(comment));
- comment() => char('"')
- .seq(char('"').neg().star())
- .seq(char('"'));
-
- // the original implementation uses the hand written number
- // parser of the system, this is the spec of the ANSI standard
- number() => char('-').optional()
- .seq(ref(positiveNumber));
- positiveNumber() => ref(scaledDecimal)
- .or(ref(float))
- .or(ref(integer));
-
- integer() => ref(radixInteger)
- .or(ref(decimalInteger));
- decimalInteger() => ref(digits);
- digits() => digit().plus();
- radixInteger() => ref(radixSpecifier)
- .seq(char('r'))
- .seq(ref(radixDigits));
- radixSpecifier() => ref(digits);
- radixDigits() => pattern('0-9A-Z').plus();
-
- float() => ref(mantissa)
- .seq(ref(exponentLetter)
- .seq(ref(exponent))
- .optional());
- mantissa() => ref(digits)
- .seq(char('.'))
- .seq(ref(digits));
- exponent() => char('-')
- .seq(ref(decimalInteger));
- exponentLetter() => pattern('edq');
-
- scaledDecimal() => ref(scaledMantissa)
- .seq(char('s'))
- .seq(ref(fractionalDigits).optional());
- scaledMantissa() => ref(decimalInteger)
- .or(ref(mantissa));
- fractionalDigits() => ref(decimalInteger);
-
- // the original smalltalk grammar
- array() => ref(token, '{')
- .seq(ref(expression).separatedBy(ref(periodToken))
- .seq(ref(periodToken).optional()).optional())
- .seq(ref(token, '}'));
- arrayItem() => ref(literal)
- .or(ref(symbolLiteralArray))
- .or(ref(arrayLiteralArray))
- .or(ref(byteLiteralArray));
- arrayLiteral() => ref(token, '#(')
- .seq(ref(arrayItem).star())
- .seq(ref(token, ')'));
- arrayLiteralArray() => ref(token, '(')
- .seq(ref(arrayItem).star())
- .seq(ref(token, ')'));
- assignment() => ref(variable)
- .seq(ref(assignmentToken));
- assignmentToken() => ref(token, ':=');
- binary() => pattern('!%&*+,-/<=>?@\\|~').plus();
- binaryExpression() => ref(unaryExpression)
- .seq(ref(binaryMessage).star());
- binaryMessage() => ref(binaryToken)
- .seq(ref(unaryExpression));
- binaryMethod() => ref(binaryToken)
- .seq(ref(variable));
- binaryPragma() => ref(binaryToken)
- .seq(ref(arrayItem));
- binaryToken() => ref(token, ref(binary));
- block() => ref(token, '[')
- .seq(ref(blockBody))
- .seq(ref(token, ']'));
- blockArgument() => ref(token, ':')
- .seq(ref(variable));
- blockArguments() => ref(blockArgumentsWith)
- .or(ref(blockArgumentsWithout));
- blockArgumentsWith() => ref(blockArgument).plus()
- .seq(ref(token, '|').or(ref(token, ']').and()));
- blockArgumentsWithout() => epsilon();
- blockBody() => ref(blockArguments)
- .seq(ref(sequence));
- byteLiteral() => ref(token, '#[')
- .seq(ref(numberLiteral).star())
- .seq(ref(token, ']'));
- byteLiteralArray() => ref(token, '[')
- .seq(ref(numberLiteral).star())
- .seq(ref(token, ']'));
- cascadeExpression() => ref(keywordExpression)
- .seq(ref(cascadeMessage).star());
- cascadeMessage() => ref(token, ';')
- .seq(ref(message));
- character() => char('\$').seq(any());
- characterLiteral() => ref(characterToken);
- characterToken() => ref(token, ref(character));
- expression() => ref(assignment).star()
- .seq(ref(cascadeExpression));
- falseLiteral() => ref(falseToken);
- falseToken() => ref(token, 'false')
- .seq(word().not());
- identifier() => pattern('a-zA-Z_')
- .seq(word().star());
- identifierToken() => ref(token, ref(identifier));
- keyword() => ref(identifier)
- .seq(char(':'));
- keywordExpression() => ref(binaryExpression)
- .seq(ref(keywordMessage).optional());
- keywordMessage() => ref(keywordToken)
- .seq(ref(binaryExpression)).plus();
- keywordMethod() => ref(keywordToken)
- .seq(ref(variable)).plus();
- keywordPragma() => ref(keywordToken)
- .seq(ref(arrayItem)).plus();
- keywordToken() => ref(token, ref(keyword));
- literal() => ref(numberLiteral)
- .or(ref(stringLiteral))
- .or(ref(characterLiteral))
- .or(ref(arrayLiteral))
- .or(ref(byteLiteral))
- .or(ref(symbolLiteral))
- .or(ref(nilLiteral))
- .or(ref(trueLiteral))
- .or(ref(falseLiteral));
- message() => ref(keywordMessage)
- .or(ref(binaryMessage))
- .or(ref(unaryMessage));
- method() => ref(methodDeclaration)
- .seq(ref(methodSequence));
- methodDeclaration() => ref(keywordMethod)
- .or(ref(unaryMethod))
- .or(ref(binaryMethod));
- methodSequence() => ref(periodToken).star()
- .seq(ref(pragmas))
- .seq(ref(periodToken).star())
- .seq(ref(temporaries))
- .seq(ref(periodToken).star())
- .seq(ref(pragmas))
- .seq(ref(periodToken).star())
- .seq(ref(statements));
- multiword() => ref(keyword).plus();
- nilLiteral() => ref(nilToken);
- nilToken() => ref(token, 'nil')
- .seq(word().not());
- numberLiteral() => ref(numberToken);
- numberToken() => ref(token, ref(number));
- parens() => ref(token, '(')
- .seq(ref(expression))
- .seq(ref(token, ')'));
- period() => char('.');
- periodToken() => ref(token, ref(period));
- pragma() => ref(token, '<')
- .seq(ref(pragmaMessage))
- .seq(ref(token, '>'));
- pragmaMessage() => ref(keywordPragma)
- .or(ref(unaryPragma))
- .or(ref(binaryPragma));
- pragmas() => ref(pragma).star();
- primary() => ref(literal)
- .or(ref(variable))
- .or(ref(block))
- .or(ref(parens))
- .or(ref(array));
- answer() => ref(token, '^')
- .seq(ref(expression));
- sequence() => ref(temporaries)
- .seq(ref(periodToken).star())
- .seq(ref(statements));
- start() => ref(startMethod);
- startMethod() => ref(method).end();
- statements() => ref(expression)
- .seq(ref(periodToken).plus().seq(ref(statements))
- .or(ref(periodToken).star()))
- .or(ref(answer).seq(ref(periodToken).star()))
- .or(ref(periodToken).star());
- string_() => char('\'')
- .seq(string('\'\'').or(pattern('^\'')).star())
- .seq(char('\''));
- stringLiteral() => ref(stringToken);
- stringToken() => ref(token, ref(string_));
- symbol() => ref(unary)
- .or(ref(binary))
- .or(ref(multiword))
- .or(ref(string_));
- symbolLiteral() => ref(token, '#').plus()
- .seq(ref(token, ref(symbol)));
- symbolLiteralArray() => ref(token, ref(symbol));
- temporaries() => ref(token, '|')
- .seq(ref(variable).star())
- .seq(ref(token, '|'))
- .optional();
- trueLiteral() => ref(trueToken);
- trueToken() => ref(token, 'true')
- .seq(word().not());
- unary() => ref(identifier)
- .seq(char(':').not());
- unaryExpression() => ref(primary)
- .seq(ref(unaryMessage).star());
- unaryMessage() => ref(unaryToken);
- unaryMethod() => ref(identifierToken);
- unaryPragma() => ref(identifierToken);
- unaryToken() => ref(token, ref(unary));
- variable() => ref(identifierToken);
-
-}
« no previous file with comments | « petitparser/lib/src/reflection/transform.dart ('k') | petitparser/lib/test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698