From b227c23ce087e1c598628b8d0f8e446113e9baad Mon Sep 17 00:00:00 2001 From: Artem3213212 Date: Sun, 26 Aug 2018 22:07:34 +0300 Subject: [PATCH] Init2 --- AG.PascalTokeniser.pas | 81 ++++++++++++++++++++--------------------- DelphiTests/Tests.dpr | 2 +- DelphiTests/Tests.dproj | 6 +-- 3 files changed, 44 insertions(+), 45 deletions(-) diff --git a/AG.PascalTokeniser.pas b/AG.PascalTokeniser.pas index 24adfea..8e7ca23 100644 --- a/AG.PascalTokeniser.pas +++ b/AG.PascalTokeniser.pas @@ -2,46 +2,9 @@ unit AG.PascalTokeniser; interface -implementation - -(* -# -# PyPascalTokenizer -# Author: Artem Gavrilov (@Artem3213212) -# License: MPL 2.0 -# - -import queue, threading - -SYMS1 = ['(',')','[',']','/','|','\\','@','#','=','>','<',':',';',',','.','$','+','-','*'] -SYMS2 = ['>=','<=','<>',':=','..','-=','+=','/=','*='] -SPACES = ['\f','\n','\r','\t','\v',' '] -NO_NAME_SYMS = SYMS1 + SPACES + ['{','}'] -CHARS_ID0 = '&abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_' -CHARS_ID = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_' - -def is_comment(s): - if type(s) is list: - return True - else: - return s.startswith('{') or s.startswith('(*') or s.startswith('//') - -def is_name(s): - if len(s)<=0: - return False - if s=='&': - return False - if not (s[0] in CHARS_ID0): - return False - for i in s[1:]: - if not (i in CHARS_ID): - return False - return True - -def is_string(s): - return s.startswith("'") - -class PasTokenizer(): +type + TPasTokenizer=class + (*class PasTokenizer(): def __init__(self, s): self.s, self.y, self.x, self.ended = s, 0, 0, False self._skip_spaces() @@ -169,7 +132,43 @@ class PasTokenizer(): return z def is_ended(self): - return self.ended + return self.ended*) + end; + +implementation + +(* +import queue, threading + +SYMS1 = ['(',')','[',']','/','|','\\','@','#','=','>','<',':',';',',','.','$','+','-','*'] +SYMS2 = ['>=','<=','<>',':=','..','-=','+=','/=','*='] +SPACES = ['\f','\n','\r','\t','\v',' '] +NO_NAME_SYMS = SYMS1 + SPACES + ['{','}'] +CHARS_ID0 = '&abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_' +CHARS_ID = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_' + +def is_comment(s): + if type(s) is list: + return True + else: + return s.startswith('{') or s.startswith('(*') or s.startswith('//') + +def is_name(s): + if len(s)<=0: + return False + if s=='&': + return False + if not (s[0] in CHARS_ID0): + return False + for i in s[1:]: + if not (i in CHARS_ID): + return False + return True + +def is_string(s): + return s.startswith("'") + + class PasTokenizerStack(): def __init__(self, s, comments=True): diff --git a/DelphiTests/Tests.dpr b/DelphiTests/Tests.dpr index 2f25df5..f8ce4d2 100644 --- a/DelphiTests/Tests.dpr +++ b/DelphiTests/Tests.dpr @@ -12,7 +12,7 @@ uses DUnitX.Loggers.Xml.NUnit, DUnitX.TestFramework, MainTest in 'MainTest.pas', - AGPascalTokeniser in '..\AGPascalTokeniser.pas'; + AG.PascalTokeniser in '..\AG.PascalTokeniser.pas'; var runner : ITestRunner; diff --git a/DelphiTests/Tests.dproj b/DelphiTests/Tests.dproj index 8e427c8..a63ec25 100644 --- a/DelphiTests/Tests.dproj +++ b/DelphiTests/Tests.dproj @@ -93,7 +93,7 @@ MainSource - + Cfg_2 Base @@ -455,13 +455,13 @@ 1 - + + - False