--- a/compiler/PPCTokenizingConfiguration.st Mon Aug 24 23:42:53 2015 +0100
+++ b/compiler/PPCTokenizingConfiguration.st Tue Aug 25 01:30:32 2015 +0100
@@ -3,18 +3,15 @@
"{ NameSpace: Smalltalk }"
PPCConfiguration subclass:#PPCTokenizingConfiguration
- instanceVariableNames:'scannerClazz parserClazz idGen'
+ instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'PetitCompiler-Core'
!
+
!PPCTokenizingConfiguration methodsFor:'compiling'!
-options: args
- super options: args.
-!
-
buildClass: clazz
| builder |
builder := PPCClassBuilder new.
@@ -48,32 +45,10 @@
self buildScannerScans.
self generateScanner.
self generateParser.
-! !
-
-!PPCTokenizingConfiguration methodsFor:'initialization'!
-
-fillInClazzes
- parserClazz name: options parserName.
- parserClazz superclass: PPTokenizingCompiledParser.
-
- scannerClazz name: options scannerName.
- scannerClazz superclass: options scannerSuperclass.
-
!
-initialize
- super initialize.
-
- parserClazz := PPCClass new.
- scannerClazz := PPCClass new.
-
- idGen := PPCIdGenerator new.
-
- "The parser and scanner share the same id generator in order
- to use same names for tokens.
- "
- parserClazz idGen: idGen.
- scannerClazz idGen: idGen.
+options: args
+ super options: args.
! !
!PPCTokenizingConfiguration methodsFor:'phases'!
@@ -81,11 +56,13 @@
buildParserClazz
| rootMethod |
rootMethod := PPCTokenizingCodeGenerator new
- clazz: parserClazz;
+ clazz: context parserClass;
options: options;
visit: ir.
- parserClazz propertyAt: #rootMethod put: rootMethod
+ context parserClass propertyAt: #rootMethod put: rootMethod
+
+ "Modified: / 25-08-2015 / 00:07:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
buildScannerScans
@@ -98,29 +75,35 @@
fsas := fsas reject: [ :fsa | fsa hasDistinctRetvals not ].
generator := PPCScannerCodeGenerator new
- clazz: scannerClazz;
+ clazz: context scannerClass;
options: options;
yourself.
fsas do: [ :fsa | generator generate: fsa ].
+
+ "Modified: / 25-08-2015 / 00:04:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
buildScannerTokens
| generator |
generator := PPCTokenCodeGenerator new
- clazz: scannerClazz;
+ clazz: context scannerClass;
options: options;
yourself.
generator visit: ir.
+
+ "Modified: / 25-08-2015 / 00:04:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
createFSAs
ir := PPCFSAVisitor new
- idGen: idGen;
+ idGen: context scannerClass idGen;
visit: ir.
self remember: (self copyTree: ir) as: #withFSAs
+
+ "Modified: / 25-08-2015 / 00:07:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
createLL1Choices
@@ -136,33 +119,35 @@
generateParser
| parserClass rootMethod |
options generate ifFalse: [ ^ self ].
- rootMethod := parserClazz propertyAt: #rootMethod.
+ rootMethod := context parserClass propertyAt: #rootMethod.
- parserClazz name: options parserName.
- parserClazz superclass: options parserSuperclass.
+ context parserClass name: options parserName.
+ context parserClass superclass: options parserSuperclass.
- parserClass := self buildClass: parserClazz.
+ parserClass := self buildClass: context parserClass.
parserClass startSymbol: rootMethod methodName.
self remember: parserClass as: #parser.
ir := parserClass new
-
+ "Modified: / 25-08-2015 / 00:05:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
generateScanner
| scanner |
options generate ifFalse: [ ^ self ].
- scannerClazz name: options scannerName.
- scannerClazz superclass: options scannerSuperclass.
+ context scannerClass name: options scannerName.
+ context scannerClass superclass: options scannerSuperclass.
- scanner := (self buildClass: scannerClazz).
- parserClazz addConstant: scanner as: #scannerClass.
+ scanner := (self buildClass: context scannerClass).
+ context parserClass addConstant: scanner as: #scannerClass.
ir := scanner.
self remember: scanner as: #scanner
+
+ "Modified: / 25-08-2015 / 00:06:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
tokenize
@@ -188,3 +173,10 @@
]
! !
+!PPCTokenizingConfiguration class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+