|
// Tiny Parser Generator v1.0
// Copyright © Herre Kuijpers 2008-2010
// this grammar describes the BNF notation
// Terminals:
BRACKETOPEN -> @"\(\s*";
BRACKETCLOSE -> @"\s*\)";
CODEBLOCK -> @"\s*\{[^\}]*\}\s*([^\}]*\}\s*)*;" { return "some code"; };
ATTRIBUTESKIP -> @"\s*\[Skip]\s*";
PIPE -> @"\s*\|\s*";
SEMICOLON -> @"\s*;";
UNARYOPER -> @"\s*(\*|\+|\?)";
IDENTIFIER -> @"[a-zA-Z_][a-zA-Z0-9_]*";
ARROW -> @"\s*->\s*";
EOF -> @"^\s*$";
WHITESPACE -> @"\s+";
REGEX -> @"@?\""(\""\""|[^\""])*\""";
[Skip]
COMMENTLINE -> @"//[^\n]*\n?";
[Skip]
COMMENTBLOCK -> @"\s+/\*[^*]*\*+(?:[^/*][^*]*\*+)*/";
// Production lines LL(1):
Start -> ( WHITESPACE* ExtProduction )* EOF { return "hello world"; };
ExtProduction -> (Attribute)* Production;
Attribute -> ATTRIBUTESKIP;
Production -> IDENTIFIER ARROW Rule (CODEBLOCK | SEMICOLON);
Rule -> REGEX | Subrule { return 0; };
Subrule -> Symbol (BinaryOper Symbol )* ;
Symbol -> (IDENTIFIER | BRACKETOPEN Subrule BRACKETCLOSE ) UNARYOPER? ;
BinaryOper -> WHITESPACE | PIPE;
/*
First symbols:
Start: WHITESPACE ATTRIBUTESKIP IDENTIFIER EOF
ExtProduction: ATTRIBUTESKIP IDENTIFIER
Attribute: ATTRIBUTESKIP
Production: IDENTIFIER
Rule: REGEX IDENTIFIER BRACKETOPEN UNARYOPER
Subrule: IDENTIFIER BRACKETOPEN UNARYOPER
Symbol: IDENTIFIER BRACKETOPEN UNARYOPER
BinaryOper: WHITESPACE PIPE
Statement: CODEBLOCK SEMICOLON
Skips symbols: COMMENTLINE COMMENTBLOCK
*/
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Currently Herre Kuijpers is employed at Rubicon. During his career he developed skills with all kinds of technologies, methodologies and programming languages such as c#, ASP.Net, .Net Core, VC++, Javascript, SQL, Agile, Scrum, DevOps, ALM. Currently he fulfills the role of software architect in various projects.
Herre Kuijpers is a very experienced software architect with deep knowledge of software design and development on the Microsoft .Net platform. He has a broad knowledge of Microsoft products and knows how these, in combination with custom software, can be optimally implemented in the often complex environment of the customer.