diff -r 439c4057517f -r e36906742693 compiler/PPCTokenizingConfiguration.st --- 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 " ! 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 " ! 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 " ! 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 " ! 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 " ! 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 " ! tokenize @@ -188,3 +173,10 @@ ] ! ! +!PPCTokenizingConfiguration class methodsFor:'documentation'! + +version_HG + + ^ '$Changeset: $' +! ! +