From d25073ae034704a314a7be13ef6a866d645e3b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Szeremeta?= Date: Mon, 17 Aug 2020 13:22:05 +0200 Subject: [PATCH] More comples NUMBER definition INTEGER, DECIMAL, DOUBLE with EXPONENT --- other-notations/YARSpg.ebnf | 10 +++++++--- yarspg/YARSpg.g4 | 20 +++++++++++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/other-notations/YARSpg.ebnf b/other-notations/YARSpg.ebnf index ce0a000..796cb88 100644 --- a/other-notations/YARSpg.ebnf +++ b/other-notations/YARSpg.ebnf @@ -146,7 +146,13 @@ SECTION_NAME | 'EDGES' COMMENT ::= '#' [^#xd#xa#xc]* STRING ::= STRING_LITERAL_QUOTE -NUMBER ::= SIGN? [0-9]+ '.'? [0-9]* +NUMBER ::= INTEGER + | DECIMAL + | DOUBLE +INTEGER ::= SIGN? [0-9]+ +DECIMAL ::= SIGN? [0-9]* '.' [0-9]+ +DOUBLE ::= SIGN? ([0-9]+ '.' [0-9]* EXPONENT | '.' [0-9]+ EXPONENT | [0-9]+ EXPONENT) +EXPONENT ::= [eE] SIGN? [0-9]+ BOOL ::= 'true' | 'false' DATETYPE ::= DATETIME @@ -157,8 +163,6 @@ TIME ::= [0-9] [0-9] ':' [0-9] [0-9] ':' [0-9] [0-9] TIMEZONE? TIMEZONE ::= SIGN? [0-9] [0-9] ':' [0-9] [0-9] DATETIME ::= DATE 'T' TIME -SIGN ::= '+' - | '-' STRING_LITERAL_QUOTE ::= '"' ([^"\#xd#xa] | "'" | '\"')* '"' ALNUM_PLUS diff --git a/yarspg/YARSpg.g4 b/yarspg/YARSpg.g4 index 9bb98f5..c773da8 100644 --- a/yarspg/YARSpg.g4 +++ b/yarspg/YARSpg.g4 @@ -253,9 +253,27 @@ STRING ; NUMBER - : SIGN? [0-9]+'.'?[0-9]* + : INTEGER + | DECIMAL + | DOUBLE ; +INTEGER + : SIGN? [0-9]+ + ; + +DECIMAL + : SIGN? [0-9]* '.' [0-9]+ + ; + +DOUBLE + : SIGN? ([0-9]+ '.' [0-9]* EXPONENT | '.' [0-9]+ EXPONENT | [0-9]+ EXPONENT) + ; + +EXPONENT + : [eE] SIGN? [0-9]+ + ; + BOOL : 'true' | 'false'