Author: mathk
Date: Fri Mar 28 11:07:33 2014
New Revision: 10657
URL: http://svn.gna.org/viewcvs/etoile?rev=10657&view=rev
Log:
Splitting ParserKit
Added:
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKAstExpressionGen.st
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKParseFail.st
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKRules.st
Modified:
trunk/Etoile/Languages/ParserKit/GNUmakefile
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/LKInfo.plist
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/ParserKit.st
Modified: trunk/Etoile/Languages/ParserKit/GNUmakefile
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/ParserKit/GNUmakefile?rev=10657&r1=10656&r2=10657&view=diff
==============================================================================
--- trunk/Etoile/Languages/ParserKit/GNUmakefile (original)
+++ trunk/Etoile/Languages/ParserKit/GNUmakefile Fri Mar 28 11:07:33 2014
@@ -26,6 +26,8 @@
ST_FILES = ParserKit.st\
Utils.st\
PKParseAction.st\
+ PKParseFail.st\
+ PKRules.st\
PKParseMatch.st\
PKParseRestriction.st\
PKRestrictedMatch.st\
Modified:
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/LKInfo.plist
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/LKInfo.plist?rev=10657&r1=10656&r2=10657&view=diff
==============================================================================
Binary files - no diff available.
Added:
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKAstExpressionGen.st
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKAstExpressionGen.st?rev=10657&view=auto
==============================================================================
---
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKAstExpressionGen.st
(added)
+++
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKAstExpressionGen.st
Fri Mar 28 11:07:33 2014
@@ -0,0 +1,20 @@
+
+"
+ Expression generator, presently only used for alternative expressions.
+"
+NSObject subclass: PKAstExpressionGen [
+ | expression operation |
+
+ initWithExp: exp operation: op [
+ expression := exp.
+ operation := op
+ ]
+
+ reduce: exp [
+ exp == nil
+ ifFalse: [ expression ]
+ ifTrue: [ operation value: exp value: expression ]
+ ]
+]
+
+
Added:
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKParseFail.st
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKParseFail.st?rev=10657&view=auto
==============================================================================
--- trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKParseFail.st
(added)
+++ trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKParseFail.st
Fri Mar 28 11:07:33 2014
@@ -0,0 +1,36 @@
+
+NSObject subclass: PKParseFail [
+ | input failedPosition describ delegate cause |
+
+ initWithInput: list description: string cause: theCause [
+ super init.
+ describ := string.
+ input := list.
+ cause := theCause.
+ failedPosition := input position.
+ ^self
+ ]
+ initWithInput: list description: string [
+ ^self initWithInput: list description: string cause: nil
+ ]
+
+ cause [
+ ^(cause == nil) ifTrue: [ self ]
+ ifFalse: [ cause cause ]
+ ]
+
+ setDelegate: anObject [ delegate := anObject]
+ stopPosition [^failedPosition]
+ isFailure [ ^true ]
+ isSuccess [ ^false ]
+ matchAction [^nil]
+ matchText [^'PKParseFail']
+ bind: name ["No sensible thing can be done here"]
+ description [
+ | desc |
+ desc := 'PKMatchFailure ( At: ''', failedPosition
description, ''', ', input stream, ') ', describ, '\n'.
+ (nil == cause) ifFalse: [desc := desc, 'Cause: ', self cause
description, '\n'].
+ ^desc.
+ ]
+]
+
Added: trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKRules.st
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKRules.st?rev=10657&view=auto
==============================================================================
--- trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKRules.st
(added)
+++ trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/PKRules.st
Fri Mar 28 11:07:33 2014
@@ -0,0 +1,74 @@
+
+
+"
+ PKRules encapsulates the rules set up by a single grammar.
+"
+NSObject subclass: PKRules [
+ | parent rules name |
+
+ initWithName: string [
+ super init.
+ name := string.
+ parent := nil.
+ rules := NSMutableDictionary new.
+ ^self
+ ]
+
+ at: rule [
+ ^self lookup: rule ifFailed: [
+ | ruleExp |
+ ruleExp := PKNonTerminalExpression alloc initWithName:
rule exp: nil.
+ rules setValue: ruleExp forKey: rule.
+ ruleExp
+ ]
+ ]
+
+ addRule: name expression: exp [
+ | rule |
+ rule := rules objectForKey: name.
+ rule == nil ifTrue: [
+ rule := PKNonTerminalExpression alloc initWithName:
name exp: exp.
+ rules setValue: rule forKey: name
+ ] ifFalse: [
+ rule setExpression: exp
+ ].
+ ^rule
+ ]
+
+ lookup: rule ifFailed: aBlock [
+ | return |
+ return := rules objectForKey: rule.
+ return == nil ifTrue:[
+ parent == nil
+ ifTrue: [ return := aBlock value ]
+ ifFalse: [
+ return := parent lookup: rule ifFailed:
aBlock
+ ]
+ ].
+ ^return
+ ]
+
+ initWithParent: pkRules name: string [
+ self initWithName: string.
+ parent := pkRules
+ ]
+
+ name [ ^name ]
+
+ description [
+ | desc |
+ desc := name.
+ parent == nil ifFalse: [ desc := desc, ' : ', parent name ].
+ desc := desc, ' {\n'.
+ rules allKeys do: [:key |
+ desc := desc, key, ' <- ', (rules objectForKey: key)
expression description, '\n'
+ ].
+ ^desc, '}'
+ ]
+
+ subgrammar: string [
+ ^self class alloc initWithParent: self name: string
+ ]
+]
+
+
Modified:
trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/ParserKit.st
URL:
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/ParserKit.st?rev=10657&r1=10656&r2=10657&view=diff
==============================================================================
--- trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/ParserKit.st
(original)
+++ trunk/Etoile/Languages/ParserKit/ParserKit.bundle/Resources/ParserKit.st
Fri Mar 28 11:07:33 2014
@@ -28,41 +28,6 @@
============================================================================
"
-NSObject subclass: PKParseFail [
- | input failedPosition describ delegate cause |
-
- initWithInput: list description: string cause: theCause [
- super init.
- describ := string.
- input := list.
- cause := theCause.
- failedPosition := input position.
- ^self
- ]
- initWithInput: list description: string [
- ^self initWithInput: list description: string cause: nil
- ]
-
- cause [
- ^(cause == nil) ifTrue: [ self ]
- ifFalse: [ cause cause ]
- ]
-
- setDelegate: anObject [ delegate := anObject]
- stopPosition [^failedPosition]
- isFailure [ ^true ]
- isSuccess [ ^false ]
- matchAction [^nil]
- matchText [^'PKParseFail']
- bind: name ["No sensible thing can be done here"]
- description [
- | desc |
- desc := 'PKMatchFailure ( At: ''', failedPosition
description, ''', ', input stream, ') ', describ, '\n'.
- (nil == cause) ifFalse: [desc := desc, 'Cause: ', self cause
description, '\n'].
- ^desc.
- ]
-]
-
"
============================================================================
@@ -70,79 +35,6 @@
============================================================================
"
-
-
-"
- PKRules encapsulates the rules set up by a single grammar.
-"
-NSObject subclass: PKRules [
- | parent rules name |
-
- initWithName: string [
- super init.
- name := string.
- parent := nil.
- rules := NSMutableDictionary new.
- ^self
- ]
-
- at: rule [
- ^self lookup: rule ifFailed: [
- | ruleExp |
- ruleExp := PKNonTerminalExpression alloc initWithName:
rule exp: nil.
- rules setValue: ruleExp forKey: rule.
- ruleExp
- ]
- ]
-
- addRule: name expression: exp [
- | rule |
- rule := rules objectForKey: name.
- rule == nil ifTrue: [
- rule := PKNonTerminalExpression alloc initWithName:
name exp: exp.
- rules setValue: rule forKey: name
- ] ifFalse: [
- rule setExpression: exp
- ].
- ^rule
- ]
-
- lookup: rule ifFailed: aBlock [
- | return |
- return := rules objectForKey: rule.
- return == nil ifTrue:[
- parent == nil
- ifTrue: [ return := aBlock value ]
- ifFalse: [
- return := parent lookup: rule ifFailed:
aBlock
- ]
- ].
- ^return
- ]
-
- initWithParent: pkRules name: string [
- self initWithName: string.
- parent := pkRules
- ]
-
- name [ ^name ]
-
- description [
- | desc |
- desc := name.
- parent == nil ifFalse: [ desc := desc, ' : ', parent name ].
- desc := desc, ' {\n'.
- rules allKeys do: [:key |
- desc := desc, key, ' <- ', (rules objectForKey: key)
expression description, '\n'
- ].
- ^desc, '}'
- ]
-
- subgrammar: string [
- ^self class alloc initWithParent: self name: string
- ]
-]
-
NSObject subclass: PKParser [
| +rulesRepo input rules delegate |
@@ -454,25 +346,6 @@
"
"
- Expression generator, presently only used for alternative expressions.
-"
-NSObject subclass: PKAstExpressionGen [
- | expression operation |
-
- initWithExp: exp operation: op [
- expression := exp.
- operation := op
- ]
-
- reduce: exp [
- exp == nil
- ifFalse: [ expression ]
- ifTrue: [ operation value: exp value: expression ]
- ]
-]
-
-
-"
The purpose of the delayed expression builder is to defer generating
expressions that depend on global state until after the entire grammar
has been parsed.
_______________________________________________
Etoile-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-cvs