author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 19 Nov 2014 10:52:37 +0000 | |
changeset 420 | b2f2f15cef26 |
child 421 | 7e08b31e0dae |
permissions | -rw-r--r-- |
420
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'stx:goodies/petitparser/compiler/benchmarks' }" |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
Object subclass:#PPCBenchmarkResources |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
instanceVariableNames:'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
classVariableNames:'javaCache' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
poolDictionaries:'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
category:'PetitCompiler-Benchmarks' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
!PPCBenchmarkResources methodsFor:'as yet unclassified'! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
changesSized: size |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
| string changes | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
changes := PharoFilesOpener default changesFileOrNil contents. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
string := changes copyFrom: 1 to: size. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
^ string |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
javaInDirectory: directory |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
| files | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
files := self readDirectory: directory. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
files := self files: files withExtension: 'java'. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
^ files collect: [ :f | (FileStream fileNamed: f) contents ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
javaLangClass |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
javaLangMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
^ '/* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
* @(#)Math.java 1.69 04/06/14 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
* Copyright 2004 Sun Microsystems, Inc. All rights reserved. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
package java.lang; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
import java.util.Random; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
* The class <code>Math</code> contains methods for performing basic |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
* numeric operations such as the elementary exponential, logarithm, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
* square root, and trigonometric functions. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
* <p>Unlike some of the numeric methods of class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
* <code>StrictMath</code>, all implementations of the equivalent |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
* functions of class <code>Math</code> are not defined to return the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
* bit-for-bit same results. This relaxation permits |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
* better-performing implementations where strict reproducibility is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
* not required. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
* <p>By default many of the <code>Math</code> methods simply call |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
* the equivalent method in <code>StrictMath</code> for their |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
* implementation. Code generators are encouraged to use |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
* platform-specific native libraries or microprocessor instructions, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
* where available, to provide higher-performance implementations of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
* <code>Math</code> methods. Such higher-performance |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
* implementations still must conform to the specification for |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
* <code>Math</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
* <p>The quality of implementation specifications concern two |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
* properties, accuracy of the returned result and monotonicity of the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
* method. Accuracy of the floating-point <code>Math</code> methods |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
* is measured in terms of <i>ulps</i>, units in the last place. For |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
* a given floating-point format, an ulp of a specific real number |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
* value is the distance between the two floating-point values |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
* bracketing that numerical value. When discussing the accuracy of a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
* method as a whole rather than at a specific argument, the number of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
* ulps cited is for the worst-case error at any argument. If a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
* method always has an error less than 0.5 ulps, the method always |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
* returns the floating-point number nearest the exact result; such a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
* method is <i>correctly rounded</i>. A correctly rounded method is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
* generally the best a floating-point approximation can be; however, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
* it is impractical for many floating-point methods to be correctly |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
* rounded. Instead, for the <code>Math</code> class, a larger error |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
* bound of 1 or 2 ulps is allowed for certain methods. Informally, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
* with a 1 ulp error bound, when the exact result is a representable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
* number, the exact result should be returned as the computed result; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
* otherwise, either of the two floating-point values which bracket |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
* the exact result may be returned. For exact results large in |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
* magnitude, one of the endpoints of the bracket may be infinite. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
* Besides accuracy at individual arguments, maintaining proper |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
* relations between the method at different arguments is also |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
* important. Therefore, most methods with more than 0.5 ulp errors |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
* are required to be <i>semi-monotonic</i>: whenever the mathematical |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
* function is non-decreasing, so is the floating-point approximation, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
* likewise, whenever the mathematical function is non-increasing, so |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
* is the floating-point approximation. Not all approximations that |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
* have 1 ulp accuracy will automatically meet the monotonicity |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
* requirements. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
* @author unascribed |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
* @author Joseph D. Darcy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
* @version 1.69, 06/14/04 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
* @since JDK1.0 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
public final class Math { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
* Don''t let anyone instantiate this class. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
private Math() {} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
109 |
* The <code>double</code> value that is closer than any other to |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
* <i>e</i>, the base of the natural logarithms. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
public static final double E = 2.7182818284590452354; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
115 |
* The <code>double</code> value that is closer than any other to |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
116 |
* <i>pi</i>, the ratio of the circumference of a circle to its |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
117 |
* diameter. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
118 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
public static final double PI = 3.14159265358979323846; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
120 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
121 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
* Returns the trigonometric sine of an angle. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
* <ul><li>If the argument is NaN or an infinity, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
* result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
125 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
* same sign as the argument.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
127 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
128 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
* @param a an angle, in radians. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
132 |
* @return the sine of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
133 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
134 |
public static double sin(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
135 |
return StrictMath.sin(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
136 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
137 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
* Returns the trigonometric cosine of an angle. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
140 |
* <ul><li>If the argument is NaN or an infinity, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
* result is NaN.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
144 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
145 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
146 |
* @param a an angle, in radians. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
147 |
* @return the cosine of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
148 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
149 |
public static double cos(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
150 |
return StrictMath.cos(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
151 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
152 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
153 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
154 |
* Returns the trigonometric tangent of an angle. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
155 |
* <ul><li>If the argument is NaN or an infinity, then the result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
156 |
* is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
157 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
158 |
* same sign as the argument.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
159 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
160 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
161 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
162 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
163 |
* @param a an angle, in radians. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
164 |
* @return the tangent of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
165 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
166 |
public static double tan(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
167 |
return StrictMath.tan(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
168 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
169 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
170 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
171 |
* Returns the arc sine of an angle, in the range of -<i>pi</i>/2 through |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
172 |
* <i>pi</i>/2. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
173 |
* <ul><li>If the argument is NaN or its absolute value is greater |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
* than 1, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
175 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
176 |
* same sign as the argument.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
179 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
180 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
181 |
* @param a the value whose arc sine is to be returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
* @return the arc sine of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
183 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
184 |
public static double asin(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
185 |
return StrictMath.asin(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
186 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
* Returns the arc cosine of an angle, in the range of 0.0 through |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
* <i>pi</i>. Special case: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
* <ul><li>If the argument is NaN or its absolute value is greater |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
192 |
* than 1, then the result is NaN.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
193 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
195 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
196 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
197 |
* @param a the value whose arc cosine is to be returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
* @return the arc cosine of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
200 |
public static double acos(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
return StrictMath.acos(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
203 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
204 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
* Returns the arc tangent of an angle, in the range of -<i>pi</i>/2 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
* through <i>pi</i>/2. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
* <ul><li>If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
* same sign as the argument.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
210 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
212 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |
* @param a the value whose arc tangent is to be returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
215 |
* @return the arc tangent of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
216 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
217 |
public static double atan(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
218 |
return StrictMath.atan(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
220 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
* Converts an angle measured in degrees to an approximately |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
* equivalent angle measured in radians. The conversion from |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
* degrees to radians is generally inexact. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
* @param angdeg an angle, in degrees |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
* @return the measurement of the angle <code>angdeg</code> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
* in radians. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
* @since 1.2 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
public static double toRadians(double angdeg) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
return angdeg / 180.0 * PI; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
233 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
234 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
235 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
236 |
* Converts an angle measured in radians to an approximately |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
237 |
* equivalent angle measured in degrees. The conversion from |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
238 |
* radians to degrees is generally inexact; users should |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
239 |
* <i>not</i> expect <code>cos(toRadians(90.0))</code> to exactly |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
240 |
* equal <code>0.0</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
241 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
242 |
* @param angrad an angle, in radians |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
243 |
* @return the measurement of the angle <code>angrad</code> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
244 |
* in degrees. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
245 |
* @since 1.2 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
246 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
247 |
public static double toDegrees(double angrad) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
248 |
return angrad * 180.0 / PI; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
249 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
250 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
* Returns Euler''s number <i>e</i> raised to the power of a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
253 |
* <code>double</code> value. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
254 |
* <ul><li>If the argument is NaN, the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
255 |
* <li>If the argument is positive infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
256 |
* positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
257 |
* <li>If the argument is negative infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
258 |
* positive zero.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
259 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
260 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
261 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
262 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
263 |
* @param a the exponent to raise <i>e</i> to. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
264 |
* @return the value <i>e</i><sup><code>a</code></sup>, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
265 |
* where <i>e</i> is the base of the natural logarithms. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
266 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
267 |
public static double exp(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
268 |
return StrictMath.exp(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
269 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
270 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
271 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
272 |
* Returns the natural logarithm (base <i>e</i>) of a <code>double</code> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
273 |
* value. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
274 |
* <ul><li>If the argument is NaN or less than zero, then the result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
275 |
* is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
276 |
* <li>If the argument is positive infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
277 |
* positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
278 |
* <li>If the argument is positive zero or negative zero, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
279 |
* result is negative infinity.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
280 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
281 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
282 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
283 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
284 |
* @param a a value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
285 |
* @return the value ln <code>a</code>, the natural logarithm of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
286 |
* <code>a</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
287 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
288 |
public static double log(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
289 |
return StrictMath.log(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
290 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
291 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
292 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
293 |
* Returns the base 10 logarithm of a <code>double</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
294 |
* Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
295 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
296 |
* <ul><li>If the argument is NaN or less than zero, then the result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
297 |
* is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
298 |
* <li>If the argument is positive infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
299 |
* positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
300 |
* <li>If the argument is positive zero or negative zero, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
301 |
* result is negative infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
302 |
* <li> If the argument is equal to 10<sup><i>n</i></sup> for |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
303 |
* integer <i>n</i>, then the result is <i>n</i>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
304 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
305 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
306 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
307 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
308 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
309 |
* @param a a value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
310 |
* @return the base 10 logarithm of <code>a</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
311 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
312 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
313 |
public static double log10(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
314 |
return StrictMath.log10(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
315 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
316 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
317 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
318 |
* Returns the correctly rounded positive square root of a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
319 |
* <code>double</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
320 |
* Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
321 |
* <ul><li>If the argument is NaN or less than zero, then the result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
322 |
* is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
323 |
* <li>If the argument is positive infinity, then the result is positive |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
324 |
* infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
325 |
* <li>If the argument is positive zero or negative zero, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
326 |
* result is the same as the argument.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
327 |
* Otherwise, the result is the <code>double</code> value closest to |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
328 |
* the true mathematical square root of the argument value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
329 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
330 |
* @param a a value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
331 |
* @return the positive square root of <code>a</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
332 |
* If the argument is NaN or less than zero, the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
333 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
334 |
public static double sqrt(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
335 |
return StrictMath.sqrt(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
336 |
// Note that hardware sqrt instructions |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
337 |
// frequently can be directly used by JITs |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
338 |
// and should be much faster than doing |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
339 |
// Math.sqrt in software. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
340 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
341 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
342 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
343 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
344 |
* Returns the cube root of a <code>double</code> value. For |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
345 |
* positive finite <code>x</code>, <code>cbrt(-x) == |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
346 |
* -cbrt(x)</code>; that is, the cube root of a negative value is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
347 |
* the negative of the cube root of that value''s magnitude. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
348 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
349 |
* Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
350 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
351 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
352 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
353 |
* <li>If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
354 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
355 |
* <li>If the argument is infinite, then the result is an infinity |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
356 |
* with the same sign as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
357 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
358 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
359 |
* same sign as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
360 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
361 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
362 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
363 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
364 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
365 |
* @param a a value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
366 |
* @return the cube root of <code>a</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
367 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
368 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
369 |
public static double cbrt(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
370 |
return StrictMath.cbrt(a); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
371 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
372 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
373 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
374 |
* Computes the remainder operation on two arguments as prescribed |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
375 |
* by the IEEE 754 standard. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
376 |
* The remainder value is mathematically equal to |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
377 |
* <code>f1 - f2</code> × <i>n</i>, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
378 |
* where <i>n</i> is the mathematical integer closest to the exact |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
379 |
* mathematical value of the quotient <code>f1/f2</code>, and if two |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
380 |
* mathematical integers are equally close to <code>f1/f2</code>, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
381 |
* then <i>n</i> is the integer that is even. If the remainder is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
382 |
* zero, its sign is the same as the sign of the first argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
383 |
* Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
384 |
* <ul><li>If either argument is NaN, or the first argument is infinite, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
385 |
* or the second argument is positive zero or negative zero, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
386 |
* result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
387 |
* <li>If the first argument is finite and the second argument is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
388 |
* infinite, then the result is the same as the first argument.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
389 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
390 |
* @param f1 the dividend. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
391 |
* @param f2 the divisor. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
392 |
* @return the remainder when <code>f1</code> is divided by |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
393 |
* <code>f2</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
394 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
395 |
public static double IEEEremainder(double f1, double f2) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
396 |
return StrictMath.IEEEremainder(f1, f2); // delegate to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
397 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
398 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
399 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
400 |
* Returns the smallest (closest to negative infinity) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
401 |
* <code>double</code> value that is greater than or equal to the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
402 |
* argument and is equal to a mathematical integer. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
403 |
* <ul><li>If the argument value is already equal to a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
404 |
* mathematical integer, then the result is the same as the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
405 |
* argument. <li>If the argument is NaN or an infinity or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
406 |
* positive zero or negative zero, then the result is the same as |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
407 |
* the argument. <li>If the argument value is less than zero but |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
408 |
* greater than -1.0, then the result is negative zero.</ul> Note |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
409 |
* that the value of <code>Math.ceil(x)</code> is exactly the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
410 |
* value of <code>-Math.floor(-x)</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
411 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
412 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
413 |
* @param a a value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
414 |
* @return the smallest (closest to negative infinity) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
415 |
* floating-point value that is greater than or equal to |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
416 |
* the argument and is equal to a mathematical integer. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
417 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
418 |
public static double ceil(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
419 |
return StrictMath.ceil(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
420 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
421 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
422 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
423 |
* Returns the largest (closest to positive infinity) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
424 |
* <code>double</code> value that is less than or equal to the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
425 |
* argument and is equal to a mathematical integer. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
426 |
* <ul><li>If the argument value is already equal to a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
427 |
* mathematical integer, then the result is the same as the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
428 |
* argument. <li>If the argument is NaN or an infinity or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
429 |
* positive zero or negative zero, then the result is the same as |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
430 |
* the argument.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
431 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
432 |
* @param a a value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
433 |
* @return the largest (closest to positive infinity) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
434 |
* floating-point value that less than or equal to the argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
435 |
* and is equal to a mathematical integer. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
436 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
437 |
public static double floor(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
438 |
return StrictMath.floor(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
439 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
440 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
441 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
442 |
* Returns the <code>double</code> value that is closest in value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
443 |
* to the argument and is equal to a mathematical integer. If two |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
444 |
* <code>double</code> values that are mathematical integers are |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
445 |
* equally close, the result is the integer value that is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
446 |
* even. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
447 |
* <ul><li>If the argument value is already equal to a mathematical |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
448 |
* integer, then the result is the same as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
449 |
* <li>If the argument is NaN or an infinity or positive zero or negative |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
450 |
* zero, then the result is the same as the argument.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
451 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
452 |
* @param a a <code>double</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
453 |
* @return the closest floating-point value to <code>a</code> that is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
454 |
* equal to a mathematical integer. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
455 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
456 |
public static double rint(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
457 |
return StrictMath.rint(a); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
458 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
459 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
460 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
461 |
* Converts rectangular coordinates (<code>x</code>, <code>y</code>) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
462 |
* to polar (r, <i>theta</i>). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
463 |
* This method computes the phase <i>theta</i> by computing an arc tangent |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
464 |
* of <code>y/x</code> in the range of -<i>pi</i> to <i>pi</i>. Special |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
465 |
* cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
466 |
* <ul><li>If either argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
467 |
* <li>If the first argument is positive zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
468 |
* is positive, or the first argument is positive and finite and the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
469 |
* second argument is positive infinity, then the result is positive |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
470 |
* zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
471 |
* <li>If the first argument is negative zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
472 |
* is positive, or the first argument is negative and finite and the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
473 |
* second argument is positive infinity, then the result is negative zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
474 |
* <li>If the first argument is positive zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
475 |
* is negative, or the first argument is positive and finite and the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
476 |
* second argument is negative infinity, then the result is the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
477 |
* <code>double</code> value closest to <i>pi</i>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
478 |
* <li>If the first argument is negative zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
479 |
* is negative, or the first argument is negative and finite and the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
480 |
* second argument is negative infinity, then the result is the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
481 |
* <code>double</code> value closest to -<i>pi</i>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
482 |
* <li>If the first argument is positive and the second argument is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
483 |
* positive zero or negative zero, or the first argument is positive |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
484 |
* infinity and the second argument is finite, then the result is the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
485 |
* <code>double</code> value closest to <i>pi</i>/2. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
486 |
* <li>If the first argument is negative and the second argument is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
487 |
* positive zero or negative zero, or the first argument is negative |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
488 |
* infinity and the second argument is finite, then the result is the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
489 |
* <code>double</code> value closest to -<i>pi</i>/2. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
490 |
* <li>If both arguments are positive infinity, then the result is the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
491 |
* <code>double</code> value closest to <i>pi</i>/4. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
492 |
* <li>If the first argument is positive infinity and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
493 |
* is negative infinity, then the result is the <code>double</code> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
494 |
* value closest to 3*<i>pi</i>/4. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
495 |
* <li>If the first argument is negative infinity and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
496 |
* is positive infinity, then the result is the <code>double</code> value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
497 |
* closest to -<i>pi</i>/4. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
498 |
* <li>If both arguments are negative infinity, then the result is the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
499 |
* <code>double</code> value closest to -3*<i>pi</i>/4.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
500 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
501 |
* <p>The computed result must be within 2 ulps of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
502 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
503 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
504 |
* @param y the ordinate coordinate |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
505 |
* @param x the abscissa coordinate |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
506 |
* @return the <i>theta</i> component of the point |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
507 |
* (<i>r</i>, <i>theta</i>) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
508 |
* in polar coordinates that corresponds to the point |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
509 |
* (<i>x</i>, <i>y</i>) in Cartesian coordinates. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
510 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
511 |
public static double atan2(double y, double x) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
512 |
return StrictMath.atan2(y, x); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
513 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
514 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
515 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
516 |
* Returns the value of the first argument raised to the power of the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
517 |
* second argument. Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
518 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
519 |
* <ul><li>If the second argument is positive or negative zero, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
520 |
* result is 1.0. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
521 |
* <li>If the second argument is 1.0, then the result is the same as the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
522 |
* first argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
523 |
* <li>If the second argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
524 |
* <li>If the first argument is NaN and the second argument is nonzero, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
525 |
* then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
526 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
527 |
* <li>If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
528 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
529 |
* <li>the absolute value of the first argument is greater than 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
530 |
* and the second argument is positive infinity, or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
531 |
* <li>the absolute value of the first argument is less than 1 and |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
532 |
* the second argument is negative infinity, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
533 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
534 |
* then the result is positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
535 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
536 |
* <li>If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
537 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
538 |
* <li>the absolute value of the first argument is greater than 1 and |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
539 |
* the second argument is negative infinity, or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
540 |
* <li>the absolute value of the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
541 |
* first argument is less than 1 and the second argument is positive |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
542 |
* infinity, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
543 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
544 |
* then the result is positive zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
545 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
546 |
* <li>If the absolute value of the first argument equals 1 and the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
547 |
* second argument is infinite, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
548 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
549 |
* <li>If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
550 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
551 |
* <li>the first argument is positive zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
552 |
* is greater than zero, or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
553 |
* <li>the first argument is positive infinity and the second |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
554 |
* argument is less than zero, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
555 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
556 |
* then the result is positive zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
557 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
558 |
* <li>If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
559 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
560 |
* <li>the first argument is positive zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
561 |
* is less than zero, or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
562 |
* <li>the first argument is positive infinity and the second |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
563 |
* argument is greater than zero, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
564 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
565 |
* then the result is positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
566 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
567 |
* <li>If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
568 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
569 |
* <li>the first argument is negative zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
570 |
* is greater than zero but not a finite odd integer, or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
571 |
* <li>the first argument is negative infinity and the second |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
572 |
* argument is less than zero but not a finite odd integer, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
573 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
574 |
* then the result is positive zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
575 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
576 |
* <li>If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
577 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
578 |
* <li>the first argument is negative zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
579 |
* is a positive finite odd integer, or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
580 |
* <li>the first argument is negative infinity and the second |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
581 |
* argument is a negative finite odd integer, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
582 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
583 |
* then the result is negative zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
584 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
585 |
* <li>If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
586 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
587 |
* <li>the first argument is negative zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
588 |
* is less than zero but not a finite odd integer, or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
589 |
* <li>the first argument is negative infinity and the second |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
590 |
* argument is greater than zero but not a finite odd integer, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
591 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
592 |
* then the result is positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
593 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
594 |
* <li>If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
595 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
596 |
* <li>the first argument is negative zero and the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
597 |
* is a negative finite odd integer, or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
598 |
* <li>the first argument is negative infinity and the second |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
599 |
* argument is a positive finite odd integer, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
600 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
601 |
* then the result is negative infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
602 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
603 |
* <li>If the first argument is finite and less than zero |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
604 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
605 |
* <li> if the second argument is a finite even integer, the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
606 |
* result is equal to the result of raising the absolute value of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
607 |
* the first argument to the power of the second argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
608 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
609 |
* <li>if the second argument is a finite odd integer, the result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
610 |
* is equal to the negative of the result of raising the absolute |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
611 |
* value of the first argument to the power of the second |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
612 |
* argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
613 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
614 |
* <li>if the second argument is finite and not an integer, then |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
615 |
* the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
616 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
617 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
618 |
* <li>If both arguments are integers, then the result is exactly equal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
619 |
* to the mathematical result of raising the first argument to the power |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
620 |
* of the second argument if that result can in fact be represented |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
621 |
* exactly as a <code>double</code> value.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
622 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
623 |
* <p>(In the foregoing descriptions, a floating-point value is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
624 |
* considered to be an integer if and only if it is finite and a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
625 |
* fixed point of the method {@link #ceil <tt>ceil</tt>} or, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
626 |
* equivalently, a fixed point of the method {@link #floor |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
627 |
* <tt>floor</tt>}. A value is a fixed point of a one-argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
628 |
* method if and only if the result of applying the method to the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
629 |
* value is equal to the value.) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
630 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
631 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
632 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
633 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
634 |
* @param a the base. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
635 |
* @param b the exponent. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
636 |
* @return the value <code>a<sup>b</sup></code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
637 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
638 |
public static double pow(double a, double b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
639 |
return StrictMath.pow(a, b); // default impl. delegates to StrictMath |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
640 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
641 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
642 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
643 |
* Returns the closest <code>int</code> to the argument. The |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
644 |
* result is rounded to an integer by adding 1/2, taking the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
645 |
* floor of the result, and casting the result to type <code>int</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
646 |
* In other words, the result is equal to the value of the expression: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
647 |
* <p><pre>(int)Math.floor(a + 0.5f)</pre> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
648 |
* <p> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
649 |
* Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
650 |
* <ul><li>If the argument is NaN, the result is 0. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
651 |
* <li>If the argument is negative infinity or any value less than or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
652 |
* equal to the value of <code>Integer.MIN_VALUE</code>, the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
653 |
* equal to the value of <code>Integer.MIN_VALUE</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
654 |
* <li>If the argument is positive infinity or any value greater than or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
655 |
* equal to the value of <code>Integer.MAX_VALUE</code>, the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
656 |
* equal to the value of <code>Integer.MAX_VALUE</code>.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
657 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
658 |
* @param a a floating-point value to be rounded to an integer. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
659 |
* @return the value of the argument rounded to the nearest |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
660 |
* <code>int</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
661 |
* @see java.lang.Integer#MAX_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
662 |
* @see java.lang.Integer#MIN_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
663 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
664 |
public static int round(float a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
665 |
return (int)floor(a + 0.5f); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
666 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
667 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
668 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
669 |
* Returns the closest <code>long</code> to the argument. The result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
670 |
* is rounded to an integer by adding 1/2, taking the floor of the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
671 |
* result, and casting the result to type <code>long</code>. In other |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
672 |
* words, the result is equal to the value of the expression: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
673 |
* <p><pre>(long)Math.floor(a + 0.5d)</pre> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
674 |
* <p> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
675 |
* Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
676 |
* <ul><li>If the argument is NaN, the result is 0. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
677 |
* <li>If the argument is negative infinity or any value less than or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
678 |
* equal to the value of <code>Long.MIN_VALUE</code>, the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
679 |
* equal to the value of <code>Long.MIN_VALUE</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
680 |
* <li>If the argument is positive infinity or any value greater than or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
681 |
* equal to the value of <code>Long.MAX_VALUE</code>, the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
682 |
* equal to the value of <code>Long.MAX_VALUE</code>.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
683 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
684 |
* @param a a floating-point value to be rounded to a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
685 |
* <code>long</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
686 |
* @return the value of the argument rounded to the nearest |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
687 |
* <code>long</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
688 |
* @see java.lang.Long#MAX_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
689 |
* @see java.lang.Long#MIN_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
690 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
691 |
public static long round(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
692 |
return (long)floor(a + 0.5d); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
693 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
694 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
695 |
private static Random randomNumberGenerator; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
696 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
697 |
private static synchronized void initRNG() { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
698 |
if (randomNumberGenerator == null) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
699 |
randomNumberGenerator = new Random(); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
700 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
701 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
702 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
703 |
* Returns a <code>double</code> value with a positive sign, greater |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
704 |
* than or equal to <code>0.0</code> and less than <code>1.0</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
705 |
* Returned values are chosen pseudorandomly with (approximately) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
706 |
* uniform distribution from that range. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
707 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
708 |
* <p>When this method is first called, it creates a single new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
709 |
* pseudorandom-number generator, exactly as if by the expression |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
710 |
* <blockquote><pre>new java.util.Random</pre></blockquote> This |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
711 |
* new pseudorandom-number generator is used thereafter for all |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
712 |
* calls to this method and is used nowhere else. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
713 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
714 |
* <p>This method is properly synchronized to allow correct use by |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
715 |
* more than one thread. However, if many threads need to generate |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
716 |
* pseudorandom numbers at a great rate, it may reduce contention |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
717 |
* for each thread to have its own pseudorandom-number generator. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
718 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
719 |
* @return a pseudorandom <code>double</code> greater than or equal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
720 |
* to <code>0.0</code> and less than <code>1.0</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
721 |
* @see java.util.Random#nextDouble() |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
722 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
723 |
public static double random() { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
724 |
if (randomNumberGenerator == null) initRNG(); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
725 |
return randomNumberGenerator.nextDouble(); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
726 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
727 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
728 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
729 |
* Returns the absolute value of an <code>int</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
730 |
* If the argument is not negative, the argument is returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
731 |
* If the argument is negative, the negation of the argument is returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
732 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
733 |
* <p>Note that if the argument is equal to the value of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
734 |
* <code>Integer.MIN_VALUE</code>, the most negative representable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
735 |
* <code>int</code> value, the result is that same value, which is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
736 |
* negative. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
737 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
738 |
* @param a the argument whose absolute value is to be determined |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
739 |
* @return the absolute value of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
740 |
* @see java.lang.Integer#MIN_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
741 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
742 |
public static int abs(int a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
743 |
return (a < 0) ? -a : a; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
744 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
745 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
746 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
747 |
* Returns the absolute value of a <code>long</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
748 |
* If the argument is not negative, the argument is returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
749 |
* If the argument is negative, the negation of the argument is returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
750 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
751 |
* <p>Note that if the argument is equal to the value of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
752 |
* <code>Long.MIN_VALUE</code>, the most negative representable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
753 |
* <code>long</code> value, the result is that same value, which |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
754 |
* is negative. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
755 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
756 |
* @param a the argument whose absolute value is to be determined |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
757 |
* @return the absolute value of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
758 |
* @see java.lang.Long#MIN_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
759 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
760 |
public static long abs(long a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
761 |
return (a < 0) ? -a : a; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
762 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
763 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
764 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
765 |
* Returns the absolute value of a <code>float</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
766 |
* If the argument is not negative, the argument is returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
767 |
* If the argument is negative, the negation of the argument is returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
768 |
* Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
769 |
* <ul><li>If the argument is positive zero or negative zero, the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
770 |
* result is positive zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
771 |
* <li>If the argument is infinite, the result is positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
772 |
* <li>If the argument is NaN, the result is NaN.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
773 |
* In other words, the result is the same as the value of the expression: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
774 |
* <p><pre>Float.intBitsToFloat(0x7fffffff & Float.floatToIntBits(a))</pre> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
775 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
776 |
* @param a the argument whose absolute value is to be determined |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
777 |
* @return the absolute value of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
778 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
779 |
public static float abs(float a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
780 |
return (a <= 0.0F) ? 0.0F - a : a; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
781 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
782 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
783 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
784 |
* Returns the absolute value of a <code>double</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
785 |
* If the argument is not negative, the argument is returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
786 |
* If the argument is negative, the negation of the argument is returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
787 |
* Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
788 |
* <ul><li>If the argument is positive zero or negative zero, the result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
789 |
* is positive zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
790 |
* <li>If the argument is infinite, the result is positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
791 |
* <li>If the argument is NaN, the result is NaN.</ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
792 |
* In other words, the result is the same as the value of the expression: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
793 |
* <p><code>Double.longBitsToDouble((Double.doubleToLongBits(a)<<1)>>>1)</code> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
794 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
795 |
* @param a the argument whose absolute value is to be determined |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
796 |
* @return the absolute value of the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
797 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
798 |
public static double abs(double a) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
799 |
return (a <= 0.0D) ? 0.0D - a : a; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
800 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
801 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
802 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
803 |
* Returns the greater of two <code>int</code> values. That is, the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
804 |
* result is the argument closer to the value of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
805 |
* <code>Integer.MAX_VALUE</code>. If the arguments have the same value, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
806 |
* the result is that same value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
807 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
808 |
* @param a an argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
809 |
* @param b another argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
810 |
* @return the larger of <code>a</code> and <code>b</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
811 |
* @see java.lang.Long#MAX_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
812 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
813 |
public static int max(int a, int b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
814 |
return (a >= b) ? a : b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
815 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
816 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
817 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
818 |
* Returns the greater of two <code>long</code> values. That is, the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
819 |
* result is the argument closer to the value of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
820 |
* <code>Long.MAX_VALUE</code>. If the arguments have the same value, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
821 |
* the result is that same value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
822 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
823 |
* @param a an argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
824 |
* @param b another argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
825 |
* @return the larger of <code>a</code> and <code>b</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
826 |
* @see java.lang.Long#MAX_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
827 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
828 |
public static long max(long a, long b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
829 |
return (a >= b) ? a : b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
830 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
831 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
832 |
private static long negativeZeroFloatBits = Float.floatToIntBits(-0.0f); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
833 |
private static long negativeZeroDoubleBits = Double.doubleToLongBits(-0.0d); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
834 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
835 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
836 |
* Returns the greater of two <code>float</code> values. That is, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
837 |
* the result is the argument closer to positive infinity. If the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
838 |
* arguments have the same value, the result is that same |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
839 |
* value. If either value is NaN, then the result is NaN. Unlike |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
840 |
* the numerical comparison operators, this method considers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
841 |
* negative zero to be strictly smaller than positive zero. If one |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
842 |
* argument is positive zero and the other negative zero, the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
843 |
* result is positive zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
844 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
845 |
* @param a an argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
846 |
* @param b another argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
847 |
* @return the larger of <code>a</code> and <code>b</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
848 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
849 |
public static float max(float a, float b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
850 |
if (a !!= a) return a; // a is NaN |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
851 |
if ((a == 0.0f) && (b == 0.0f) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
852 |
&& (Float.floatToIntBits(a) == negativeZeroFloatBits)) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
853 |
return b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
854 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
855 |
return (a >= b) ? a : b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
856 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
857 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
858 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
859 |
* Returns the greater of two <code>double</code> values. That |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
860 |
* is, the result is the argument closer to positive infinity. If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
861 |
* the arguments have the same value, the result is that same |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
862 |
* value. If either value is NaN, then the result is NaN. Unlike |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
863 |
* the numerical comparison operators, this method considers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
864 |
* negative zero to be strictly smaller than positive zero. If one |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
865 |
* argument is positive zero and the other negative zero, the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
866 |
* result is positive zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
867 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
868 |
* @param a an argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
869 |
* @param b another argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
870 |
* @return the larger of <code>a</code> and <code>b</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
871 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
872 |
public static double max(double a, double b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
873 |
if (a !!= a) return a; // a is NaN |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
874 |
if ((a == 0.0d) && (b == 0.0d) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
875 |
&& (Double.doubleToLongBits(a) == negativeZeroDoubleBits)) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
876 |
return b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
877 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
878 |
return (a >= b) ? a : b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
879 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
880 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
881 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
882 |
* Returns the smaller of two <code>int</code> values. That is, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
883 |
* the result the argument closer to the value of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
884 |
* <code>Integer.MIN_VALUE</code>. If the arguments have the same |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
885 |
* value, the result is that same value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
886 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
887 |
* @param a an argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
888 |
* @param b another argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
889 |
* @return the smaller of <code>a</code> and <code>b</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
890 |
* @see java.lang.Long#MIN_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
891 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
892 |
public static int min(int a, int b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
893 |
return (a <= b) ? a : b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
894 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
895 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
896 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
897 |
* Returns the smaller of two <code>long</code> values. That is, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
898 |
* the result is the argument closer to the value of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
899 |
* <code>Long.MIN_VALUE</code>. If the arguments have the same |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
900 |
* value, the result is that same value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
901 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
902 |
* @param a an argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
903 |
* @param b another argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
904 |
* @return the smaller of <code>a</code> and <code>b</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
905 |
* @see java.lang.Long#MIN_VALUE |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
906 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
907 |
public static long min(long a, long b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
908 |
return (a <= b) ? a : b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
909 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
910 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
911 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
912 |
* Returns the smaller of two <code>float</code> values. That is, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
913 |
* the result is the value closer to negative infinity. If the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
914 |
* arguments have the same value, the result is that same |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
915 |
* value. If either value is NaN, then the result is NaN. Unlike |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
916 |
* the numerical comparison operators, this method considers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
917 |
* negative zero to be strictly smaller than positive zero. If |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
918 |
* one argument is positive zero and the other is negative zero, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
919 |
* the result is negative zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
920 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
921 |
* @param a an argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
922 |
* @param b another argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
923 |
* @return the smaller of <code>a</code> and <code>b.</code> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
924 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
925 |
public static float min(float a, float b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
926 |
if (a !!= a) return a; // a is NaN |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
927 |
if ((a == 0.0f) && (b == 0.0f) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
928 |
&& (Float.floatToIntBits(b) == negativeZeroFloatBits)) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
929 |
return b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
930 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
931 |
return (a <= b) ? a : b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
932 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
933 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
934 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
935 |
* Returns the smaller of two <code>double</code> values. That |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
936 |
* is, the result is the value closer to negative infinity. If the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
937 |
* arguments have the same value, the result is that same |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
938 |
* value. If either value is NaN, then the result is NaN. Unlike |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
939 |
* the numerical comparison operators, this method considers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
940 |
* negative zero to be strictly smaller than positive zero. If one |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
941 |
* argument is positive zero and the other is negative zero, the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
942 |
* result is negative zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
943 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
944 |
* @param a an argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
945 |
* @param b another argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
946 |
* @return the smaller of <code>a</code> and <code>b</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
947 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
948 |
public static double min(double a, double b) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
949 |
if (a !!= a) return a; // a is NaN |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
950 |
if ((a == 0.0d) && (b == 0.0d) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
951 |
&& (Double.doubleToLongBits(b) == negativeZeroDoubleBits)) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
952 |
return b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
953 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
954 |
return (a <= b) ? a : b; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
955 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
956 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
957 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
958 |
* Returns the size of an ulp of the argument. An ulp of a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
959 |
* <code>double</code> value is the positive distance between this |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
960 |
* floating-point value and the <code>double</code> value next |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
961 |
* larger in magnitude. Note that for non-NaN <i>x</i>, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
962 |
* <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
963 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
964 |
* <p>Special Cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
965 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
966 |
* <li> If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
967 |
* <li> If the argument is positive or negative infinity, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
968 |
* result is positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
969 |
* <li> If the argument is positive or negative zero, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
970 |
* <code>Double.MIN_VALUE</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
971 |
* <li> If the argument is ±<code>Double.MAX_VALUE</code>, then |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
972 |
* the result is equal to 2<sup>971</sup>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
973 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
974 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
975 |
* @param d the floating-point value whose ulp is to be returned |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
976 |
* @return the size of an ulp of the argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
977 |
* @author Joseph D. Darcy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
978 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
979 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
980 |
public static double ulp(double d) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
981 |
return sun.misc.FpUtils.ulp(d); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
982 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
983 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
984 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
985 |
* Returns the size of an ulp of the argument. An ulp of a |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
986 |
* <code>float</code> value is the positive distance between this |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
987 |
* floating-point value and the <code>float</code> value next |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
988 |
* larger in magnitude. Note that for non-NaN <i>x</i>, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
989 |
* <code>ulp(-<i>x</i>) == ulp(<i>x</i>)</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
990 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
991 |
* <p>Special Cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
992 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
993 |
* <li> If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
994 |
* <li> If the argument is positive or negative infinity, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
995 |
* result is positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
996 |
* <li> If the argument is positive or negative zero, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
997 |
* <code>Float.MIN_VALUE</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
998 |
* <li> If the argument is ±<code>Float.MAX_VALUE</code>, then |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
999 |
* the result is equal to 2<sup>104</sup>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1000 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1001 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1002 |
* @param f the floating-point value whose ulp is to be returned |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1003 |
* @return the size of an ulp of the argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1004 |
* @author Joseph D. Darcy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1005 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1006 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1007 |
public static float ulp(float f) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1008 |
return sun.misc.FpUtils.ulp(f); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1009 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1010 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1011 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1012 |
* Returns the signum function of the argument; zero if the argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1013 |
* is zero, 1.0 if the argument is greater than zero, -1.0 if the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1014 |
* argument is less than zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1015 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1016 |
* <p>Special Cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1017 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1018 |
* <li> If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1019 |
* <li> If the argument is positive zero or negative zero, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1020 |
* result is the same as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1021 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1022 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1023 |
* @param d the floating-point value whose signum is to be returned |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1024 |
* @return the signum function of the argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1025 |
* @author Joseph D. Darcy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1026 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1027 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1028 |
public static double signum(double d) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1029 |
return sun.misc.FpUtils.signum(d); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1030 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1031 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1032 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1033 |
* Returns the signum function of the argument; zero if the argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1034 |
* is zero, 1.0f if the argument is greater than zero, -1.0f if the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1035 |
* argument is less than zero. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1036 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1037 |
* <p>Special Cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1038 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1039 |
* <li> If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1040 |
* <li> If the argument is positive zero or negative zero, then the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1041 |
* result is the same as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1042 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1043 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1044 |
* @param f the floating-point value whose signum is to be returned |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1045 |
* @return the signum function of the argument |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1046 |
* @author Joseph D. Darcy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1047 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1048 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1049 |
public static float signum(float f) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1050 |
return sun.misc.FpUtils.signum(f); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1051 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1052 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1053 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1054 |
* Returns the hyperbolic sine of a <code>double</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1055 |
* The hyperbolic sine of <i>x</i> is defined to be |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1056 |
* (<i>e<sup>x</sup> - e<sup>-x</sup></i>)/2 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1057 |
* where <i>e</i> is {@linkplain Math#E Euler''s number}. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1058 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1059 |
* <p>Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1060 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1061 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1062 |
* <li>If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1063 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1064 |
* <li>If the argument is infinite, then the result is an infinity |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1065 |
* with the same sign as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1066 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1067 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1068 |
* same sign as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1069 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1070 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1071 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1072 |
* <p>The computed result must be within 2.5 ulps of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1073 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1074 |
* @param x The number whose hyperbolic sine is to be returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1075 |
* @return The hyperbolic sine of <code>x</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1076 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1077 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1078 |
public static double sinh(double x) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1079 |
return StrictMath.sinh(x); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1080 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1081 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1082 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1083 |
* Returns the hyperbolic cosine of a <code>double</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1084 |
* The hyperbolic cosine of <i>x</i> is defined to be |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1085 |
* (<i>e<sup>x</sup> + e<sup>-x</sup></i>)/2 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1086 |
* where <i>e</i> is {@linkplain Math#E Euler''s number}. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1087 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1088 |
* <p>Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1089 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1090 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1091 |
* <li>If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1092 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1093 |
* <li>If the argument is infinite, then the result is positive |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1094 |
* infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1095 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1096 |
* <li>If the argument is zero, then the result is <code>1.0</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1097 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1098 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1099 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1100 |
* <p>The computed result must be within 2.5 ulps of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1101 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1102 |
* @param x The number whose hyperbolic cosine is to be returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1103 |
* @return The hyperbolic cosine of <code>x</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1104 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1105 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1106 |
public static double cosh(double x) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1107 |
return StrictMath.cosh(x); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1108 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1109 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1110 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1111 |
* Returns the hyperbolic tangent of a <code>double</code> value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1112 |
* The hyperbolic tangent of <i>x</i> is defined to be |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1113 |
* (<i>e<sup>x</sup> - e<sup>-x</sup></i>)/(<i>e<sup>x</sup> + e<sup>-x</sup></i>), |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1114 |
* in other words, {@linkplain Math#sinh |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1115 |
* sinh(<i>x</i>)}/{@linkplain Math#cosh cosh(<i>x</i>)}. Note |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1116 |
* that the absolute value of the exact tanh is always less than |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1117 |
* 1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1118 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1119 |
* <p>Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1120 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1121 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1122 |
* <li>If the argument is NaN, then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1123 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1124 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1125 |
* same sign as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1126 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1127 |
* <li>If the argument is positive infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1128 |
* <code>+1.0</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1129 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1130 |
* <li>If the argument is negative infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1131 |
* <code>-1.0</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1132 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1133 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1134 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1135 |
* <p>The computed result must be within 2.5 ulps of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1136 |
* The result of <code>tanh</code> for any finite input must have |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1137 |
* an absolute value less than or equal to 1. Note that once the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1138 |
* exact result of tanh is within 1/2 of an ulp of the limit value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1139 |
* of ±1, correctly signed ±<code>1.0</code> should |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1140 |
* be returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1141 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1142 |
* @param x The number whose hyperbolic tangent is to be returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1143 |
* @return The hyperbolic tangent of <code>x</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1144 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1145 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1146 |
public static double tanh(double x) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1147 |
return StrictMath.tanh(x); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1148 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1149 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1150 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1151 |
* Returns sqrt(<i>x</i><sup>2</sup> +<i>y</i><sup>2</sup>) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1152 |
* without intermediate overflow or underflow. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1153 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1154 |
* <p>Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1155 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1156 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1157 |
* <li> If either argument is infinite, then the result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1158 |
* is positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1159 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1160 |
* <li> If either argument is NaN and neither argument is infinite, |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1161 |
* then the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1162 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1163 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1164 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1165 |
* <p>The computed result must be within 1 ulp of the exact |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1166 |
* result. If one parameter is held constant, the results must be |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1167 |
* semi-monotonic in the other parameter. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1168 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1169 |
* @param x a value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1170 |
* @param y a value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1171 |
* @return sqrt(<i>x</i><sup>2</sup> +<i>y</i><sup>2</sup>) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1172 |
* without intermediate overflow or underflow |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1173 |
* @since 1.5 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1174 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1175 |
public static double hypot(double x, double y) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1176 |
return StrictMath.hypot(x, y); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1177 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1178 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1179 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1180 |
* Returns <i>e</i><sup>x</sup> -1. Note that for values of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1181 |
* <i>x</i> near 0, the exact sum of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1182 |
* <code>expm1(x)</code> + 1 is much closer to the true |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1183 |
* result of <i>e</i><sup>x</sup> than <code>exp(x)</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1184 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1185 |
* <p>Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1186 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1187 |
* <li>If the argument is NaN, the result is NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1188 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1189 |
* <li>If the argument is positive infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1190 |
* positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1191 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1192 |
* <li>If the argument is negative infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1193 |
* -1.0. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1194 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1195 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1196 |
* same sign as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1197 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1198 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1199 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1200 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1201 |
* Results must be semi-monotonic. The result of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1202 |
* <code>expm1</code> for any finite input must be greater than or |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1203 |
* equal to <code>-1.0</code>. Note that once the exact result of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1204 |
* <i>e</i><sup><code>x</code></sup> - 1 is within 1/2 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1205 |
* ulp of the limit value -1, <code>-1.0</code> should be |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1206 |
* returned. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1207 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1208 |
* @param x the exponent to raise <i>e</i> to in the computation of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1209 |
* <i>e</i><sup><code>x</code></sup> -1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1210 |
* @return the value <i>e</i><sup><code>x</code></sup> - 1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1211 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1212 |
public static double expm1(double x) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1213 |
return StrictMath.expm1(x); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1214 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1215 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1216 |
/** |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1217 |
* Returns the natural logarithm of the sum of the argument and 1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1218 |
* Note that for small values <code>x</code>, the result of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1219 |
* <code>log1p(x)</code> is much closer to the true result of ln(1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1220 |
* + <code>x</code>) than the floating-point evaluation of |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1221 |
* <code>log(1.0+x)</code>. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1222 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1223 |
* <p>Special cases: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1224 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1225 |
* <ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1226 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1227 |
* <li>If the argument is NaN or less than -1, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1228 |
* NaN. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1229 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1230 |
* <li>If the argument is positive infinity, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1231 |
* positive infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1232 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1233 |
* <li>If the argument is negative one, then the result is |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1234 |
* negative infinity. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1235 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1236 |
* <li>If the argument is zero, then the result is a zero with the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1237 |
* same sign as the argument. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1238 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1239 |
* </ul> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1240 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1241 |
* <p>The computed result must be within 1 ulp of the exact result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1242 |
* Results must be semi-monotonic. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1243 |
* |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1244 |
* @param x a value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1245 |
* @return the value ln(<code>x</code> + 1), the natural |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1246 |
* log of <code>x</code> + 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1247 |
*/ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1248 |
public static double log1p(double x) { |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1249 |
return StrictMath.log1p(x); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1250 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1251 |
} |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1252 |
' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1253 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1254 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1255 |
javaSourcesBig |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1256 |
^ self workingJavaInDirectory: '../java-src/java/util' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1257 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1258 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1259 |
petitParserPackage |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1260 |
^ ' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1261 |
Object subclass: #PPCharSetPredicate |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1262 |
instanceVariableNames: ''block classification'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1263 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1264 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1265 |
category: ''PetitParser-Tools''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1266 |
!!PPCharSetPredicate commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1267 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1268 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1269 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1270 |
!!PPCharSetPredicate methodsFor: ''initialization'' stamp: ''lr 8/30/2010 12:19''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1271 |
initializeOn: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1272 |
block := aBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1273 |
classification := Array new: 255. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1274 |
1 to: classification size do: [ :index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1275 |
classification at: index put: (block |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1276 |
value: (Character value: index)) ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1277 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1278 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1279 |
!!PPCharSetPredicate methodsFor: ''evaluating'' stamp: ''lr 8/30/2010 12:19''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1280 |
value: aCharacter |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1281 |
| index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1282 |
index := aCharacter asInteger. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1283 |
index == 0 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1284 |
ifTrue: [ ^ block value: aCharacter ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1285 |
index > 255 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1286 |
ifTrue: [ ^ block value: aCharacter ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1287 |
^ classification at: index!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1288 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1289 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1290 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1291 |
PPCharSetPredicate class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1292 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1293 |
!!PPCharSetPredicate class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1294 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1295 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1296 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1297 |
!!PPCharSetPredicate class methodsFor: ''instance creation'' stamp: ''lr 8/25/2010 11:05''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1298 |
on: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1299 |
^ self basicNew initializeOn: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1300 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1301 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1302 |
PPDelegateParser subclass: #PPExpressionParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1303 |
instanceVariableNames: ''operators'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1304 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1305 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1306 |
category: ''PetitParser-Tools''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1307 |
!!PPExpressionParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1308 |
A PPExpressionParser is a parser to conveniently define an expression grammar with prefix, postfix, and left- and right-associative infix operators. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1309 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1310 |
The following code initializes a parser for arithmetic expressions. First we instantiate an expression parser, a simple parser for expressions in parenthesis and a simple parser for integer numbers. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1311 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1312 |
expression := PPExpressionParser new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1313 |
parens := $( asParser token trim , expression , $) asParser token trim |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1314 |
==> [ :nodes | nodes second ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1315 |
integer := #digit asParser plus token trim |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1316 |
==> [ :token | token value asInteger ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1317 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1318 |
Then we define on what term the expression grammar is built on: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1319 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1320 |
expression term: parens / integer. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1321 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1322 |
Finally we define the operator-groups in descending precedence. Note, that the action blocks receive both, the terms and the parsed operator in the order they appear in the parsed input. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1323 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1324 |
expression |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1325 |
group: [ :g | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1326 |
g prefix: $- asParser token trim do: [ :op :a | a negated ] ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1327 |
group: [ :g | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1328 |
g postfix: ''++'' asParser token trim do: [ :a :op | a + 1 ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1329 |
g postfix: ''--'' asParser token trim do: [ :a :op | a - 1 ] ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1330 |
group: [ :g | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1331 |
g right: $^ asParser token trim do: [ :a :op :b | a raisedTo: b ] ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1332 |
group: [ :g | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1333 |
g left: $* asParser token trim do: [ :a :op :b | a * b ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1334 |
g left: $/ asParser token trim do: [ :a :op :b | a / b ] ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1335 |
group: [ :g | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1336 |
g left: $+ asParser token trim do: [ :a :op :b | a + b ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1337 |
g left: $- asParser token trim do: [ :a :op :b | a - b ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1338 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1339 |
After evaluating the above code the ''expression'' is an efficient parser that evaluates examples like: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1340 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1341 |
expression parse: ''-8++''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1342 |
expression parse: ''1+2*3''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1343 |
expression parse: ''1*2+3''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1344 |
expression parse: ''(1+2)*3''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1345 |
expression parse: ''8/4/2''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1346 |
expression parse: ''8/(4/2)''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1347 |
expression parse: ''2^2^3''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1348 |
expression parse: ''(2^2)^3''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1349 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1350 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1351 |
operators <Dictionary> The operators defined in the current group.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1352 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1353 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1354 |
!!PPExpressionParser methodsFor: ''private'' stamp: ''FirstnameLastname 11/26/2009 20:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1355 |
build: aParser right: aChoiceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1356 |
^ (aParser separatedBy: aChoiceParser) foldRight: [ :a :op :b | op first value: a value: op second value: b ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1357 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1358 |
!!PPExpressionParser methodsFor: ''private'' stamp: ''FirstnameLastname 11/26/2009 20:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1359 |
build: aParser left: aChoiceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1360 |
^ (aParser separatedBy: aChoiceParser) foldLeft: [ :a :op :b | op first value: a value: op second value: b ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1361 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1362 |
!!PPExpressionParser methodsFor: ''private'' stamp: ''lr 12/4/2009 17:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1363 |
build: aParser postfix: aChoiceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1364 |
^ aParser , aChoiceParser star map: [ :term :ops | ops inject: term into: [ :result :operator | operator first value: result value: operator second ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1365 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1366 |
!!PPExpressionParser methodsFor: ''private'' stamp: ''FirstnameLastname 11/26/2009 21:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1367 |
buildOn: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1368 |
^ self buildSelectors inject: aParser into: [ :term :selector | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1369 |
| list | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1370 |
list := operators at: selector ifAbsent: [ #() ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1371 |
list isEmpty |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1372 |
ifTrue: [ term ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1373 |
ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1374 |
self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1375 |
perform: selector with: term |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1376 |
with: (list size = 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1377 |
ifTrue: [ list first first ==> [ :operator | Array with: list first second with: operator ] ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1378 |
ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1379 |
list |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1380 |
inject: PPChoiceParser new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1381 |
into: [ :choice :each | choice / (each first ==> [ :operator | Array with: each second with: operator ]) ] ]) ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1382 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1383 |
!!PPExpressionParser methodsFor: ''private'' stamp: ''lr 12/4/2009 17:39''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1384 |
build: aParser prefix: aChoiceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1385 |
^ aChoiceParser star , aParser map: [ :ops :term | ops reversed inject: term into: [ :result :operator | operator first value: operator second value: result ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1386 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1387 |
!!PPExpressionParser methodsFor: ''private'' stamp: ''FirstnameLastname 11/26/2009 20:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1388 |
buildSelectors |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1389 |
^ #(build:prefix: build:postfix: build:right: build:left:)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1390 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1391 |
!!PPExpressionParser methodsFor: ''private'' stamp: ''lr 2/7/2010 23:23''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1392 |
operator: aSymbol parser: aParser do: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1393 |
parser isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1394 |
ifTrue: [ ^ self error: ''You did not specify a term when creating the receiver.'' ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1395 |
operators isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1396 |
ifTrue: [ ^ self error: ''Use #group: to define precedence groups in descending order.'' ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1397 |
(operators at: aSymbol ifAbsentPut: [ OrderedCollection new ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1398 |
addLast: (Array with: aParser asParser with: aBlock)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1399 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1400 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1401 |
!!PPExpressionParser methodsFor: ''specifying'' stamp: ''FirstnameLastname 11/26/2009 21:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1402 |
term: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1403 |
"Defines the initial term aParser of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1404 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1405 |
parser isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1406 |
ifTrue: [ parser := aParser ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1407 |
ifFalse: [ self error: ''Unable to redefine the term.'' ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1408 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1409 |
!!PPExpressionParser methodsFor: ''specifying'' stamp: ''FirstnameLastname 11/26/2009 20:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1410 |
postfix: aParser do: aTwoArgumentBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1411 |
"Define a postfix operator aParser. Evaluate aTwoArgumentBlock with the term and the operator." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1412 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1413 |
self operator: #build:postfix: parser: aParser do: aTwoArgumentBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1414 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1415 |
!!PPExpressionParser methodsFor: ''specifying'' stamp: ''FirstnameLastname 11/26/2009 20:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1416 |
left: aParser do: aThreeArgumentBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1417 |
"Define an operator aParser that is left-associative. Evaluate aThreeArgumentBlock with the first term, the operator, and the second term." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1418 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1419 |
self operator: #build:left: parser: aParser do: aThreeArgumentBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1420 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1421 |
!!PPExpressionParser methodsFor: ''specifying'' stamp: ''FirstnameLastname 11/26/2009 20:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1422 |
prefix: aParser do: aTwoArgumentBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1423 |
"Define a prefix operator aParser. Evaluate aTwoArgumentBlock with the operator and the term." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1424 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1425 |
self operator: #build:prefix: parser: aParser do: aTwoArgumentBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1426 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1427 |
!!PPExpressionParser methodsFor: ''specifying'' stamp: ''FirstnameLastname 11/26/2009 20:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1428 |
right: aParser do: aThreeArgumentBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1429 |
"Define an operator aParser that is right-associative. Evaluate aThreeArgumentBlock with the first term, the operator, and the second term." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1430 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1431 |
self operator: #build:right: parser: aParser do: aThreeArgumentBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1432 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1433 |
!!PPExpressionParser methodsFor: ''specifying'' stamp: ''lr 2/7/2010 23:20''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1434 |
group: aOneArgumentBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1435 |
"Defines a priority group by evaluating aOneArgumentBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1436 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1437 |
operators := Dictionary new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1438 |
parser := [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1439 |
aOneArgumentBlock value: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1440 |
self buildOn: parser ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1441 |
ensure: [ operators := nil ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1442 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1443 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1444 |
PPDelegateParser subclass: #PPCompositeParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1445 |
instanceVariableNames: ''dependencies'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1446 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1447 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1448 |
category: ''PetitParser-Tools''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1449 |
!!PPCompositeParser commentStamp: ''lr 12/4/2009 18:38'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1450 |
A PPCompositeParser is composed parser built from various primitive parsers. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1451 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1452 |
Every production in the receiver is specified as a method that returns its parser. Note that every production requires an instance variable of the same name, otherwise the production is not cached and cannot be used in recursive grammars. Productions should refer to each other by reading the respective inst-var. Note: these inst-vars are typically not written, as the assignment happens in the initialize method using reflection. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1453 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1454 |
The start production is defined in the method start. It is aliased to the inst-var parser defined in the superclass of PPCompositeParser.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1455 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1456 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1457 |
!!PPCompositeParser methodsFor: ''querying'' stamp: ''lr 6/4/2010 13:37''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1458 |
productionAt: aSymbol ifAbsent: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1459 |
"Answer the production named aSymbol, if there is no such production answer the result of evaluating aBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1460 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1461 |
(self class ignoredNames includes: aSymbol asString) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1462 |
ifTrue: [ ^ aBlock value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1463 |
(self class startSymbol = aSymbol) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1464 |
ifTrue: [ ^ parser ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1465 |
^ self instVarAt: (self class allInstVarNames |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1466 |
indexOf: aSymbol asString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1467 |
ifAbsent: [ ^ aBlock value ])!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1468 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1469 |
!!PPCompositeParser methodsFor: ''querying'' stamp: ''lr 5/8/2011 15:45''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1470 |
productionNames |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1471 |
"Answer a dictionary of slot indexes and production names." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1472 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1473 |
| productionNames ignoredNames | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1474 |
productionNames := Dictionary new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1475 |
ignoredNames := self class ignoredNames |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1476 |
collect: [ :each | each asSymbol ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1477 |
self class allInstVarNames keysAndValuesDo: [ :key :value | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1478 |
(ignoredNames includes: value asSymbol) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1479 |
ifFalse: [ productionNames at: key put: value asSymbol ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1480 |
^ productionNames!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1481 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1482 |
!!PPCompositeParser methodsFor: ''querying'' stamp: ''lr 3/16/2013 21:41''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1483 |
dependencyAt: aClass |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1484 |
"Answer the dependent parser aClass. Throws an error if this parser class is not declared in the method #dependencies on the class-side of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1485 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1486 |
^ dependencies at: aClass ifAbsent: [ self error: ''Undeclared dependency in '' , self class name , '' to '' , aClass name ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1487 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1488 |
!!PPCompositeParser methodsFor: ''querying'' stamp: ''lr 12/4/2009 18:39''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1489 |
productionAt: aSymbol |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1490 |
"Answer the production named aSymbol." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1491 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1492 |
^ self productionAt: aSymbol ifAbsent: [ nil ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1493 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1494 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1495 |
!!PPCompositeParser methodsFor: ''initialization'' stamp: ''lr 3/16/2013 17:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1496 |
initializeStartingAt: aSymbol dependencies: aDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1497 |
self initialize. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1498 |
parser := PPDelegateParser named: aSymbol. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1499 |
self productionNames keysAndValuesDo: [ :key :value | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1500 |
self instVarAt: key put: (PPDelegateParser named: value) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1501 |
dependencies := aDictionary!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1502 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1503 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1504 |
!!PPCompositeParser methodsFor: ''accessing'' stamp: ''lr 5/16/2008 17:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1505 |
start |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1506 |
"Answer the production to start this parser with." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1507 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1508 |
self subclassResponsibility!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1509 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1510 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1511 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1512 |
PPCompositeParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1513 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1514 |
!!PPCompositeParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1515 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1516 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1517 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1518 |
!!PPCompositeParser class methodsFor: ''accessing'' stamp: ''lr 1/29/2010 11:35''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1519 |
ignoredNames |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1520 |
"Answer a collection of instance-variables that should not be automatically initialized with productions, but that are used internal to the composite parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1521 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1522 |
^ PPCompositeParser allInstVarNames!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1523 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1524 |
!!PPCompositeParser class methodsFor: ''accessing'' stamp: ''lr 12/7/2009 08:20''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1525 |
startSymbol |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1526 |
"Answer the method that represents the default start symbol." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1527 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1528 |
^ #start!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1529 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1530 |
!!PPCompositeParser class methodsFor: ''accessing'' stamp: ''lr 3/16/2013 21:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1531 |
dependencies |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1532 |
"Answer a collection of PPCompositeParser classes that this parser directly dependends on. Override this method in subclasses to declare dependent parsers. The default implementation does not depend on other PPCompositeParser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1533 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1534 |
^ #()!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1535 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1536 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1537 |
!!PPCompositeParser class methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 12/19/2013 15:40''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1538 |
debug: anObject startingAt: aSymbol onError: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1539 |
^ (self newStartingAt: aSymbol) debug: anObject onError: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1540 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1541 |
!!PPCompositeParser class methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 12/19/2013 15:39''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1542 |
debug: anObject startingAt: aSymbol |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1543 |
^ (self newStartingAt: aSymbol) debug: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1544 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1545 |
!!PPCompositeParser class methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 12/19/2013 15:40''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1546 |
debug: anObject onError: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1547 |
^ self debug: anObject startingAt: self startSymbol onError: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1548 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1549 |
!!PPCompositeParser class methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 12/19/2013 15:39''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1550 |
debug: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1551 |
^ self debug: anObject startingAt: self startSymbol!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1552 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1553 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1554 |
!!PPCompositeParser class methodsFor: ''instance creation'' stamp: ''lr 3/16/2013 21:21''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1555 |
newStartingAt: aSymbol |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1556 |
"Answer a new parser starting at aSymbol. The code makes sure to resolve all dependent parsers correctly." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1557 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1558 |
| parsers remaining | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1559 |
parsers := IdentityDictionary new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1560 |
remaining := OrderedCollection with: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1561 |
[ remaining isEmpty ] whileFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1562 |
| dependency | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1563 |
dependency := remaining removeLast. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1564 |
(parsers includesKey: dependency) ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1565 |
parsers at: dependency put: dependency basicNew. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1566 |
remaining addAll: dependency dependencies ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1567 |
parsers keysAndValuesDo: [ :class :parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1568 |
| dependencies | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1569 |
dependencies := IdentityDictionary new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1570 |
class dependencies |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1571 |
do: [ :dependency | dependencies at: dependency put: (parsers at: dependency) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1572 |
parser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1573 |
initializeStartingAt: (class == self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1574 |
ifTrue: [ aSymbol ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1575 |
ifFalse: [ class startSymbol ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1576 |
dependencies: dependencies ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1577 |
parsers keysAndValuesDo: [ :class :parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1578 |
parser setParser: (parser perform: parser children first name). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1579 |
parser productionNames keysAndValuesDo: [ :key :value | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1580 |
(parser instVarAt: key) setParser: (parser perform: value) ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1581 |
^ parsers at: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1582 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1583 |
!!PPCompositeParser class methodsFor: ''instance creation'' stamp: ''lr 12/7/2009 08:24''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1584 |
new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1585 |
"Answer a new parser starting at the default start symbol." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1586 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1587 |
^ self newStartingAt: self startSymbol!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1588 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1589 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1590 |
!!PPCompositeParser class methodsFor: ''parsing'' stamp: ''lr 2/7/2010 21:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1591 |
parse: anObject onError: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1592 |
^ self parse: anObject startingAt: self startSymbol onError: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1593 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1594 |
!!PPCompositeParser class methodsFor: ''parsing'' stamp: ''lr 2/7/2010 21:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1595 |
parse: anObject startingAt: aSymbol onError: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1596 |
^ (self newStartingAt: aSymbol) parse: anObject onError: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1597 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1598 |
!!PPCompositeParser class methodsFor: ''parsing'' stamp: ''lr 2/7/2010 20:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1599 |
parse: anObject startingAt: aSymbol |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1600 |
^ (self newStartingAt: aSymbol) parse: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1601 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1602 |
!!PPCompositeParser class methodsFor: ''parsing'' stamp: ''lr 2/7/2010 20:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1603 |
parse: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1604 |
^ self parse: anObject startingAt: self startSymbol!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1605 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1606 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1607 |
PPParser subclass: #PPUnresolvedParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1608 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1609 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1610 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1611 |
category: ''PetitParser-Tools''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1612 |
!!PPUnresolvedParser commentStamp: ''lr 11/28/2009 18:50'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1613 |
This is a temporary placeholder or forward reference to a parser that has not been defined yet. If everything goes well it will eventually be replaced with the real parser instance.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1614 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1615 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1616 |
!!PPUnresolvedParser methodsFor: ''parsing'' stamp: ''lr 2/7/2010 20:51''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1617 |
parseOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1618 |
self error: self printString , '' need to be resolved before execution.''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1619 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1620 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1621 |
!!PPUnresolvedParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1622 |
displayColor |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1623 |
^ Color red!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1624 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1625 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1626 |
!!PPUnresolvedParser methodsFor: ''testing'' stamp: ''lr 10/27/2008 11:29''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1627 |
isUnresolved |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1628 |
^ true!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1629 |
Object subclass: #PPParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1630 |
instanceVariableNames: ''properties'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1631 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1632 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1633 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1634 |
!!PPParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1635 |
An abstract parser for all parsers in PetitParser. Subclasses implement #parseOn: to perform the actual recursive-descent parsing. All parsers support a variety of methods to perform an actual parse, see the methods in the #parsing protocol. Parsers are combined with a series of operators that can be found in the #operations protocol. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1636 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1637 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1638 |
properties <Dictionary> Stores additional state in the parser object.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1639 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1640 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1641 |
!!PPParser methodsFor: ''*petitjava-operations'' stamp: ''sback 9/2/2010 23:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1642 |
javaToken |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1643 |
^ PPJavaTokenParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1644 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1645 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1646 |
!!PPParser methodsFor: ''*petitgui'' stamp: ''TudorGirba 12/18/2013 06:41''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1647 |
gtInspectorParserInspectorIn: composite |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1648 |
<gtInspectorPresentationOrder: 30> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1649 |
composite custom: ( |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1650 |
PPVerticalParserInspector new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1651 |
title: ''Sampler''; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1652 |
startOn: self)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1653 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1654 |
!!PPParser methodsFor: ''*petitgui'' stamp: ''AlexandreBergel 12/18/2013 16:40''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1655 |
gtGraphViewIn: composite |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1656 |
<gtInspectorPresentationOrder: 50> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1657 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1658 |
composite roassal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1659 |
title: ''Graph''; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1660 |
painting: [ :view | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1661 |
self visualizeStructureInGraphOn: view. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1662 |
].!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1663 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1664 |
!!PPParser methodsFor: ''*petitgui'' stamp: ''TudorGirba 6/24/2013 23:44''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1665 |
gtNamedTreeViewIn: composite |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1666 |
<gtInspectorPresentationOrder: 40> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1667 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1668 |
composite tree |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1669 |
title: ''Named Tree''; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1670 |
children: [:n | n namedChildren ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1671 |
format: [:n| n name ifNil: [ n asString ] ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1672 |
shouldExpandToLevel: 3!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1673 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1674 |
!!PPParser methodsFor: ''*petitgui'' stamp: ''TudorGirba 6/24/2013 23:44''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1675 |
gtTreeViewIn: composite |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1676 |
<gtInspectorPresentationOrder: 40> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1677 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1678 |
composite tree |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1679 |
title: ''Tree''; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1680 |
children: [:n | n children ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1681 |
format: [:n| n name ifNil: [ n asString ] ifNotNil: [n name] ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1682 |
shouldExpandToLevel: 6!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1683 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1684 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1685 |
!!PPParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 1/30/2013 19:35''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1686 |
morphicShapeDefault |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1687 |
^ self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1688 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1689 |
addMorphBack: (self newSpacerMorph); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1690 |
addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1691 |
makeForwardArrow; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1692 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1693 |
addMorphBack: (self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1694 |
borderWidth: 1; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1695 |
layoutInset: 3; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1696 |
color: Color white; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1697 |
addMorphBack: (StringMorph new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1698 |
contents: self displayName; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1699 |
color: self displayColor; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1700 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1701 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1702 |
yourself!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1703 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1704 |
!!PPParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 11/18/2009 10:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1705 |
morphicProduction |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1706 |
^ self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1707 |
layoutInset: 4; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1708 |
addMorphBack: (self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1709 |
layoutInset: 4; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1710 |
addMorphBack: (StringMorph new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1711 |
contents: self displayName; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1712 |
emphasis: TextEmphasis bold emphasisCode; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1713 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1714 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1715 |
addMorphBack: (self morphicShapeSeen: IdentitySet new depth: 0); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1716 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1717 |
addMorphBack: (self newSpacerMorph); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1718 |
addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1719 |
makeForwardArrow; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1720 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1721 |
yourself!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1722 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1723 |
!!PPParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 11/13/2009 13:24''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1724 |
morphicShapeSeen: aSet depth: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1725 |
^ self morphicShapeDefault!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1726 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1727 |
!!PPParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 11/13/2009 13:43''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1728 |
morphicShapeSeen: aSet depth: anInteger do: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1729 |
" avoid recursion " |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1730 |
(aSet includes: self) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1731 |
ifTrue: [ ^ self morphicShapeDefault ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1732 |
" display nice name when possible " |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1733 |
(anInteger > 0 and: [ self name notNil ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1734 |
ifTrue: [ ^ self morphicShapeDefault ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1735 |
" don''t do it too deep " |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1736 |
(anInteger > 10) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1737 |
ifTrue: [ ^ self morphicShapeDefault ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1738 |
aSet add: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1739 |
^ aBlock value: [ :parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1740 |
parser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1741 |
morphicShapeSeen: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1742 |
depth: anInteger + 1 ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1743 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1744 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1745 |
!!PPParser methodsFor: ''*petitanalyzer-transforming'' stamp: ''lr 10/30/2010 11:54''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1746 |
transform: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1747 |
"Answer a copy of all parsers reachable from the receiver transformed using aBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1748 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1749 |
| mapping root | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1750 |
mapping := IdentityDictionary new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1751 |
self allParsersDo: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1752 |
mapping |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1753 |
at: each |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1754 |
put: (aBlock value: each copy) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1755 |
root := mapping at: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1756 |
[ | changed | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1757 |
changed := false. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1758 |
root allParsersDo: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1759 |
each children do: [ :old | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1760 |
mapping at: old ifPresent: [ :new | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1761 |
each replace: old with: new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1762 |
changed := true ] ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1763 |
changed ] whileTrue. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1764 |
^ root!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1765 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1766 |
!!PPParser methodsFor: ''*petitanalyzer-transforming'' stamp: ''lr 4/13/2010 09:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1767 |
replace: aParser with: anotherParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1768 |
"Replace the references of the receiver pointing to aParser with anotherParser."!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1769 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1770 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1771 |
!!PPParser methodsFor: ''*petitanalyzer-named'' stamp: ''lr 11/23/2010 10:55''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1772 |
namedChildrenDo: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1773 |
"Iterate over the named children of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1774 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1775 |
self namedChildrenDo: aBlock seen: IdentitySet new!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1776 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1777 |
!!PPParser methodsFor: ''*petitanalyzer-named'' stamp: ''lr 11/23/2010 10:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1778 |
allNamedParsers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1779 |
"Answer all the named parse nodes of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1780 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1781 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1782 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1783 |
self allNamedParsersDo: [ :parser | result addLast: parser ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1784 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1785 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1786 |
!!PPParser methodsFor: ''*petitanalyzer-named'' stamp: ''lr 11/23/2010 10:55''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1787 |
namedChildrenDo: aBlock seen: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1788 |
"Iterate over the named children of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1789 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1790 |
self children do: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1791 |
(aSet includes: each) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1792 |
ifTrue: [ ^ self ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1793 |
aSet add: each. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1794 |
each name isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1795 |
ifTrue: [ each namedChildrenDo: aBlock seen: aSet ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1796 |
ifFalse: [ aBlock value: each ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1797 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1798 |
!!PPParser methodsFor: ''*petitanalyzer-named'' stamp: ''lr 12/3/2010 16:45''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1799 |
innerChildren |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1800 |
"Answer the inner children of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1801 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1802 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1803 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1804 |
self innerChildrenDo: [ :parser | result addLast: parser ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1805 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1806 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1807 |
!!PPParser methodsFor: ''*petitanalyzer-named'' stamp: ''lr 12/3/2010 16:51''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1808 |
innerChildrenDo: aBlock seen: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1809 |
"Iterate over the inner children of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1810 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1811 |
self children do: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1812 |
(aSet includes: each) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1813 |
ifTrue: [ ^ self ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1814 |
aSet add: each. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1815 |
each name isNil ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1816 |
aBlock value: each. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1817 |
each innerChildrenDo: aBlock seen: aSet ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1818 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1819 |
!!PPParser methodsFor: ''*petitanalyzer-named'' stamp: ''lr 12/3/2010 16:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1820 |
innerChildrenDo: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1821 |
"Iterate over the inner children of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1822 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1823 |
self innerChildrenDo: aBlock seen: IdentitySet new!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1824 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1825 |
!!PPParser methodsFor: ''*petitanalyzer-named'' stamp: ''lr 11/23/2010 10:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1826 |
allNamedParsersDo: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1827 |
"Iterate over all the named parse nodes of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1828 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1829 |
self allParsersDo: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1830 |
each name notNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1831 |
ifTrue: [ aBlock value: each ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1832 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1833 |
!!PPParser methodsFor: ''*petitanalyzer-named'' stamp: ''lr 11/23/2010 10:55''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1834 |
namedChildren |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1835 |
"Answer the named children of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1836 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1837 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1838 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1839 |
self namedChildrenDo: [ :parser | result addLast: parser ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1840 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1841 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1842 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1843 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 7/11/2011 11:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1844 |
trimBlanks |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1845 |
"Answer a new parser that consumes blanks before and after the receiving parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1846 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1847 |
^ self trim: #blank asParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1848 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1849 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 2/19/2010 07:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1850 |
answer: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1851 |
"Answer a new parser that always returns anObject from a successful parse." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1852 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1853 |
^ self ==> [ :nodes | anObject ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1854 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1855 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 7/11/2011 11:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1856 |
trim: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1857 |
"Answer a new parser that consumes and ignores aParser repeatedly before and after the receiving parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1858 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1859 |
^ PPTrimmingParser on: self trimmer: aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1860 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1861 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 5/6/2011 20:28''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1862 |
map: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1863 |
"Answer a new parser that works on the receiving sequence an passes in each element as a block argument." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1864 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1865 |
^ aBlock numArgs = 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1866 |
ifTrue: [ self ==> aBlock ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1867 |
ifFalse: [ self error: aBlock numArgs asString , '' arguments expected.'' ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1868 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1869 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1870 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 6/29/2010 14:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1871 |
token |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1872 |
"Answer a new parser that transforms the input to a token." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1873 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1874 |
^ PPTokenParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1875 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1876 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 4/3/2011 14:59''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1877 |
foldRight: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1878 |
"Answer a new parser that that folds the result of the receiver from right-to-left into aBlock. The argument aBlock must take two or more arguments." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1879 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1880 |
| size args | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1881 |
size := aBlock numArgs. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1882 |
args := Array new: size. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1883 |
^ self ==> [ :nodes | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1884 |
args at: size put: nodes last. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1885 |
nodes size - size + 1 to: 1 by: 1 - size do: [ :index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1886 |
args |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1887 |
replaceFrom: 1 to: size - 1 with: nodes startingAt: index; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1888 |
at: size put: (aBlock valueWithArguments: args) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1889 |
args at: size ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1890 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1891 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 7/11/2011 11:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1892 |
trimSpaces |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1893 |
"Answer a new parser that consumes spaces before and after the receiving parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1894 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1895 |
^ self trim: #space asParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1896 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1897 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 5/15/2008 16:08''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1898 |
flatten |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1899 |
"Answer a new parser that flattens the underlying collection." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1900 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1901 |
^ PPFlattenParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1902 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1903 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 7/31/2010 12:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1904 |
trim |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1905 |
"Answer a new parser that consumes spaces before and after the receiving parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1906 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1907 |
^ self trimSpaces!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1908 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1909 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 6/12/2010 10:20''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1910 |
>=> aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1911 |
"Answer a new parser that wraps the receiving parser with a two argument block. The first argument is the parsed stream, the second argument a continuation block on the delegate parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1912 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1913 |
^ PPWrappingParser on: self block: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1914 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1915 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 5/12/2010 20:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1916 |
==> aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1917 |
"Answer a new parser that performs aBlock as action handler on success." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1918 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1919 |
^ PPActionParser on: self block: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1920 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1921 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 4/3/2011 15:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1922 |
foldLeft: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1923 |
"Answer a new parser that that folds the result of the receiver from left-to-right into aBlock. The argument aBlock must take two or more arguments." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1924 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1925 |
| size args | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1926 |
size := aBlock numArgs. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1927 |
args := Array new: size. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1928 |
^ self ==> [ :nodes | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1929 |
args at: 1 put: nodes first. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1930 |
2 to: nodes size by: size - 1 do: [ :index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1931 |
args |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1932 |
replaceFrom: 2 to: size with: nodes startingAt: index; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1933 |
at: 1 put: (aBlock valueWithArguments: args) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1934 |
args first ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1935 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1936 |
!!PPParser methodsFor: ''operators-mapping'' stamp: ''lr 4/6/2010 19:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1937 |
token: aTokenClass |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1938 |
"Answer a new parser that transforms the input to a token of class aTokenClass." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1939 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1940 |
^ self token tokenClass: aTokenClass!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1941 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1942 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1943 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/3/2011 14:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1944 |
max: anInteger lazy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1945 |
"Answer a new parser that parses the receiver at most anInteger times until it reaches aParser. This is a lazy non-blind implementation. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1946 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1947 |
^ (self starLazy: aParser) setMax: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1948 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1949 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/2/2011 10:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1950 |
starLazy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1951 |
"Answer a new parser that parses the receiver zero or more times until it reaches aParser. This is a lazy non-blind implementation of the star operator. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1952 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1953 |
^ PPLazyRepeatingParser on: self limit: aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1954 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1955 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 9/15/2010 09:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1956 |
times: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1957 |
"Answer a new parser that parses the receiver exactly anInteger times." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1958 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1959 |
^ self min: anInteger max: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1960 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1961 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/3/2011 14:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1962 |
min: aMinInteger max: aMaxInteger greedy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1963 |
"Answer a new parser that parses the receiver at least aMinInteger and at most aMaxInteger times until it reaches aParser. This is a greedy non-blind implementation. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1964 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1965 |
^ (self starGreedy: aParser) setMin: aMinInteger; setMax: aMaxInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1966 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1967 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/2/2011 10:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1968 |
star |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1969 |
"Answer a new parser that parses the receiver zero or more times. This is a greedy and blind implementation that tries to consume as much input as possible and it does not consider what comes afterwards." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1970 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1971 |
^ PPPossessiveRepeatingParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1972 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1973 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/1/2011 21:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1974 |
min: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1975 |
"Answer a new parser that parses the receiver at least anInteger times." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1976 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1977 |
^ self star setMin: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1978 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1979 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/1/2011 21:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1980 |
min: aMinInteger max: aMaxInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1981 |
"Answer a new parser that parses the receiver at least aMinInteger and at most aMaxInteger times." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1982 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1983 |
^ self star setMin: aMinInteger; setMax: aMaxInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1984 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1985 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/2/2011 10:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1986 |
starGreedy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1987 |
"Answer a new parser that parses the receiver zero or more times until it reaches aParser. This is a greedy non-blind implementation of the star operator. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1988 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1989 |
^ PPGreedyRepeatingParser on: self limit: aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1990 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1991 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/3/2011 14:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1992 |
min: aMinInteger max: aMaxInteger lazy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1993 |
"Answer a new parser that parses the receiver at least aMinInteger and at most aMaxInteger times until it reaches aParser. This is a greedy non-blind implementation. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1994 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1995 |
^ (self starLazy: aParser) setMin: aMinInteger; setMax: aMaxInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1996 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1997 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/3/2011 14:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1998 |
min: anInteger lazy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1999 |
"Answer a new parser that parses the receiver at least anInteger times until it reaches aParser. This is a lazy non-blind implementation. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2000 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2001 |
^ (self starLazy: aParser) setMin: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2002 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2003 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/3/2011 14:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2004 |
max: anInteger greedy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2005 |
"Answer a new parser that parses the receiver at most anInteger times until it reaches aParser. This is a greedy non-blind implementation. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2006 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2007 |
^ (self starGreedy: aParser) setMax: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2008 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2009 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/1/2011 21:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2010 |
plus |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2011 |
"Answer a new parser that parses the receiver one or more times." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2012 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2013 |
^ self star setMin: 1!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2014 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2015 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/3/2011 14:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2016 |
min: anInteger greedy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2017 |
"Answer a new parser that parses the receiver at least anInteger times until it reaches aParser. This is a greedy non-blind implementation. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2018 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2019 |
^ (self starGreedy: aParser) setMin: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2020 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2021 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/1/2011 21:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2022 |
max: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2023 |
"Answer a new parser that parses the receiver at most anInteger times." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2024 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2025 |
^ self star setMax: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2026 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2027 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/1/2011 21:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2028 |
plusGreedy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2029 |
"Answer a new parser that parses the receiver one or more times until it reaches aParser. This is a greedy non-blind implementation of the star operator. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2030 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2031 |
^ (self starGreedy: aParser) setMin: 1!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2032 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2033 |
!!PPParser methodsFor: ''operators-repeating'' stamp: ''lr 4/1/2011 21:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2034 |
plusLazy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2035 |
"Answer a new parser that parses the receiver one or more times until it reaches aParser. This is a lazy non-blind implementation of the star operator. aParser is not consumed." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2036 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2037 |
^ (self starLazy: aParser) setMin: 1!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2038 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2039 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2040 |
!!PPParser methodsFor: ''*petitsmalltalk-operations'' stamp: ''lr 6/29/2010 14:27''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2041 |
smalltalkToken |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2042 |
^ PPSmalltalkTokenParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2043 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2044 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2045 |
!!PPParser methodsFor: ''*petitanalyzer-testing'' stamp: ''lr 5/22/2010 10:45''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2046 |
isTerminal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2047 |
"Answer true if the receiver is a terminal or leaf parser, that means it does not delegate to any other parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2048 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2049 |
^ self children isEmpty!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2050 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2051 |
!!PPParser methodsFor: ''*petitanalyzer-testing'' stamp: ''JanKurs 5/31/2013 11:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2052 |
isFirstSetTerminal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2053 |
"Answer true if the receiver is a terminal or leaf parser, that means it does not delegate to any other parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2054 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2055 |
^ self children isEmpty!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2056 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2057 |
!!PPParser methodsFor: ''*petitanalyzer-testing'' stamp: ''lr 11/12/2009 17:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2058 |
isNullable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2059 |
"Answer true if the receiver is a nullable parser, e.g. it can successfully parse nothing." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2060 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2061 |
^ false!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2062 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2063 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2064 |
!!PPParser methodsFor: ''converting'' stamp: ''lr 11/29/2011 20:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2065 |
asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2066 |
"Answer the receiving parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2067 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2068 |
^ self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2069 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2070 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2071 |
!!PPParser methodsFor: ''printing'' stamp: ''lr 4/16/2010 16:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2072 |
printNameOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2073 |
self name isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2074 |
ifTrue: [ aStream print: self hash ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2075 |
ifFalse: [ aStream nextPutAll: self name ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2076 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2077 |
!!PPParser methodsFor: ''printing'' stamp: ''lr 4/16/2010 16:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2078 |
printOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2079 |
super printOn: aStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2080 |
aStream nextPut: $(. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2081 |
self printNameOn: aStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2082 |
aStream nextPut: $)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2083 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2084 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2085 |
!!PPParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/9/2009 14:37''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2086 |
example |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2087 |
^ String streamContents: [ :stream | self exampleOn: stream ] limitedTo: 1024!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2088 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2089 |
!!PPParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/9/2009 14:20''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2090 |
exampleOn: aStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2091 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2092 |
!!PPParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 9/12/2011 18:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2093 |
displayColor |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2094 |
^ self isTerminal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2095 |
ifTrue: [ Color r: 0.5 g: 0.0 b: 0.5 ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2096 |
ifFalse: [ Color blue ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2097 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2098 |
!!PPParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/6/2009 18:31''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2099 |
displayName |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2100 |
^ self name isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2101 |
ifFalse: [ self name asString ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2102 |
ifTrue: [ self class name asString ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2103 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2104 |
!!PPParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:11''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2105 |
backgroundForDepth: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2106 |
^ Color gray: 1.0 - (anInteger / 20.0)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2107 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2108 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2109 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 10/29/2010 17:05''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2110 |
parse: anObject onError: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2111 |
"Parse anObject with the receiving parser and answer the parse-result or answer the result of evaluating aBlock. Depending on the number of arguments of the block it is simply evaluated, evaluated with the failure object, or evaluated with the error message and position." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2112 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2113 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2114 |
result := self parse: anObject. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2115 |
result isPetitFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2116 |
ifFalse: [ ^ result ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2117 |
aBlock numArgs = 0 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2118 |
ifTrue: [ ^ aBlock value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2119 |
aBlock numArgs = 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2120 |
ifTrue: [ ^ aBlock value: result ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2121 |
^ aBlock value: result message value: result position!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2122 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2123 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 6/4/2011 18:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2124 |
matchesIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2125 |
"Search anObject repeatedly for the matches of the receiver. Answered an OrderedCollection of the matched parse-trees." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2126 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2127 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2128 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2129 |
self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2130 |
matchesIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2131 |
do: [ :each | result addLast: each ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2132 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2133 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2134 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 8/16/2011 07:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2135 |
matchesSkipIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2136 |
"Search anObject repeatedly for the matches of the receiver. Answer an OrderedCollection of the matched parse-trees. Skip over matches." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2137 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2138 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2139 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2140 |
self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2141 |
matchesSkipIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2142 |
do: [ :each | result addLast: each ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2143 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2144 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2145 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 2/25/2013 23:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2146 |
matchingSkipRangesIn: anObject do: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2147 |
"Search anObject repeatedly for the matches of the receiver. Skip over matches. Evaluate aBlock with the range of each match (index of first character to: index of last character)." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2148 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2149 |
self token |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2150 |
matchesSkipIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2151 |
do: [ :token | aBlock value: (token start to: token stop) ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2152 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2153 |
!!PPParser methodsFor: ''parsing'' stamp: ''DamienCassou 10/29/2011 19:18''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2154 |
matchingSkipRangesIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2155 |
"Search anObject repeatedly for the matches of the receiver. Skip over matches. Answer an OrderedCollection of ranges of each match (index of first character to: index of last character)." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2156 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2157 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2158 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2159 |
self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2160 |
matchingSkipRangesIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2161 |
do: [ :value | result addLast: value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2162 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2163 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2164 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 6/4/2011 18:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2165 |
matchingRangesIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2166 |
"Search anObject repeatedly for the matches of the receiver. Answer an OrderedCollection of ranges of each match (index of first character to: index of last character)." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2167 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2168 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2169 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2170 |
self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2171 |
matchingRangesIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2172 |
do: [ :value | result addLast: value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2173 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2174 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2175 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 8/16/2011 07:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2176 |
matchesSkipIn: anObject do: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2177 |
"Search anObject repeatedly for the matches of the receiver. Evaluate aBlock for each match with the matched parse-tree as the argument. Skip over matches." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2178 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2179 |
(self ==> aBlock / #any asParser) star parse: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2180 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2181 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 2/25/2013 23:41''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2182 |
matchingRangesIn: anObject do: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2183 |
"Search anObject repeatedly for the matches of the receiver. Evaluate aBlock with the range of each match (index of first character to: index of last character)." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2184 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2185 |
self token |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2186 |
matchesIn: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2187 |
do: [ :token | aBlock value: (token start to: token stop) ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2188 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2189 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 2/8/2010 00:30''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2190 |
matches: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2191 |
"Answer if anObject can be parsed by the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2192 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2193 |
^ (self parse: anObject) isPetitFailure not!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2194 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2195 |
!!PPParser methodsFor: ''parsing'' stamp: ''lr 3/1/2010 21:51''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2196 |
matchesIn: anObject do: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2197 |
"Search anObject repeatedly for the matches of the receiver. Evaluate aBlock for each match with the matched parse-tree as the argument. Make sure to always consume exactly one character with each step, to not miss any match." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2198 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2199 |
((self and ==> aBlock , #any asParser) / #any asParser) star parse: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2200 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2201 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2202 |
!!PPParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 5/31/2010 18:37''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2203 |
matchList: matchList index: matchIndex against: parserList index: parserIndex inContext: aDictionary seen: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2204 |
| parser currentIndex currentDictionary currentSeen parsers | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2205 |
matchList size < matchIndex |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2206 |
ifTrue: [ ^ parserList size < parserIndex ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2207 |
parser := matchList at: matchIndex. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2208 |
parser class = PPListPattern ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2209 |
currentIndex := parserIndex - 1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2210 |
[ currentDictionary := aDictionary copy. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2211 |
currentSeen := aSet copy. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2212 |
parserList size < currentIndex or: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2213 |
parsers := parserList copyFrom: parserIndex to: currentIndex. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2214 |
(currentDictionary at: parser ifAbsentPut: [ parsers ]) = parsers and: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2215 |
(self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2216 |
matchList: matchList |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2217 |
index: matchIndex + 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2218 |
against: parserList |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2219 |
index: currentIndex + 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2220 |
inContext: currentDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2221 |
seen: currentSeen) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2222 |
ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2223 |
currentDictionary keysAndValuesDo: [ :key :value | aDictionary at: key put: value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2224 |
^ true ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2225 |
false ] ] ] whileFalse: [ currentIndex := currentIndex + 1 ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2226 |
^ false ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2227 |
parserList size < parserIndex |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2228 |
ifTrue: [ ^ false ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2229 |
(parser match: (parserList at: parserIndex) inContext: aDictionary seen: aSet) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2230 |
ifFalse: [ ^ false ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2231 |
^ self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2232 |
matchList: matchList |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2233 |
index: matchIndex + 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2234 |
against: parserList |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2235 |
index: parserIndex + 1 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2236 |
inContext: aDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2237 |
seen: aSet!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2238 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2239 |
!!PPParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 7/17/2011 11:53''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2240 |
copyInContext: aDictionary seen: aSeenDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2241 |
| copy | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2242 |
aSeenDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2243 |
at: self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2244 |
ifPresent: [ :value | ^ value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2245 |
copy := aSeenDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2246 |
at: self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2247 |
put: self copy. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2248 |
copy children do: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2249 |
copy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2250 |
replace: each |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2251 |
with: (each copyInContext: aDictionary seen: aSeenDictionary) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2252 |
^ copy!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2253 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2254 |
!!PPParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 4/30/2010 07:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2255 |
copyInContext: aDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2256 |
^ self copyInContext: aDictionary seen: IdentityDictionary new!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2257 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2258 |
!!PPParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 4/29/2010 23:07''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2259 |
matchList: matchList against: parserList inContext: aDictionary seen: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2260 |
^ self matchList: matchList index: 1 against: parserList index: 1 inContext: aDictionary seen: aSet!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2261 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2262 |
!!PPParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 6/18/2010 14:09''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2263 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2264 |
"This is the default implementation to match two parsers. This code can properly handle recursion. This is code is supposed to be overridden in subclasses that add new state." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2265 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2266 |
(self == aParser or: [ anIdentitySet includes: self ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2267 |
ifTrue: [ ^ true ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2268 |
anIdentitySet add: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2269 |
^ self class = aParser class and: [ self matchList: self children against: aParser children inContext: aDictionary seen: anIdentitySet ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2270 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2271 |
!!PPParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 4/29/2010 23:14''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2272 |
match: aParser inContext: aDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2273 |
^ self match: aParser inContext: aDictionary seen: IdentitySet new!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2274 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2275 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2276 |
!!PPParser methodsFor: ''testing'' stamp: ''lr 10/27/2008 11:28''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2277 |
isUnresolved |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2278 |
^ false!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2279 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2280 |
!!PPParser methodsFor: ''testing'' stamp: ''lr 8/6/2010 16:44''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2281 |
isPetitParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2282 |
^ true!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2283 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2284 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2285 |
!!PPParser methodsFor: ''accessing-properties'' stamp: ''lr 4/19/2010 10:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2286 |
propertyAt: aKey ifAbsentPut: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2287 |
"Answer the property associated with aKey or, if aKey isn''t found store the result of evaluating aBlock as new value." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2288 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2289 |
^ self propertyAt: aKey ifAbsent: [ self propertyAt: aKey put: aBlock value ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2290 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2291 |
!!PPParser methodsFor: ''accessing-properties'' stamp: ''lr 4/19/2010 10:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2292 |
removeProperty: aKey ifAbsent: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2293 |
"Remove the property with aKey. Answer the value or, if aKey isn''t found, answer the result of evaluating aBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2294 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2295 |
| answer | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2296 |
properties isNil ifTrue: [ ^ aBlock value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2297 |
answer := properties removeKey: aKey ifAbsent: aBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2298 |
properties isEmpty ifTrue: [ properties := nil ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2299 |
^ answer!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2300 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2301 |
!!PPParser methodsFor: ''accessing-properties'' stamp: ''lr 4/19/2010 10:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2302 |
propertyAt: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2303 |
"Answer the property value associated with aKey." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2304 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2305 |
^ self propertyAt: aKey ifAbsent: [ self error: ''Property not found'' ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2306 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2307 |
!!PPParser methodsFor: ''accessing-properties'' stamp: ''lr 4/19/2010 10:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2308 |
propertyAt: aKey ifAbsent: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2309 |
"Answer the property value associated with aKey or, if aKey isn''t found, answer the result of evaluating aBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2310 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2311 |
^ properties isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2312 |
ifTrue: [ aBlock value ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2313 |
ifFalse: [ properties at: aKey ifAbsent: aBlock ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2314 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2315 |
!!PPParser methodsFor: ''accessing-properties'' stamp: ''lr 4/19/2010 10:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2316 |
propertyAt: aKey put: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2317 |
"Set the property at aKey to be anObject. If aKey is not found, create a new entry for aKey and set is value to anObject. Answer anObject." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2318 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2319 |
^ (properties ifNil: [ properties := Dictionary new: 1 ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2320 |
at: aKey put: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2321 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2322 |
!!PPParser methodsFor: ''accessing-properties'' stamp: ''lr 4/19/2010 10:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2323 |
hasProperty: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2324 |
"Test if the property aKey is present." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2325 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2326 |
^ properties notNil and: [ properties includesKey: aKey ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2327 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2328 |
!!PPParser methodsFor: ''accessing-properties'' stamp: ''lr 4/19/2010 10:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2329 |
removeProperty: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2330 |
"Remove the property with aKey. Answer the property or raise an error if aKey isn''t found." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2331 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2332 |
^ self removeProperty: aKey ifAbsent: [ self error: ''Property not found'' ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2333 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2334 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2335 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 16:41''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2336 |
visualizationGraphType |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2337 |
^ nil!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2338 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2339 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 17:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2340 |
visualizeStructureInGraphOn: view |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2341 |
view shape rectangle |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2342 |
borderWidth: 1; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2343 |
if: [ :p | p name isNil ] fillColor: Color lightGray. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2344 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2345 |
view interaction |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2346 |
item: ''Explore'' action: #explore; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2347 |
highlightWhenOver: [ :p | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2348 |
self allParsers select: [ :ch | ch children includes: p ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2349 |
] color: Color orange muchLighter; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2350 |
highlightWhenOver: [ :p | |children| |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2351 |
children := p namedChildren. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2352 |
] color: Color orange muchDarker; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2353 |
highlightWhenOver: [ :p | Array with: p ] color: Color orange; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2354 |
popupText: [:p | p class name asString ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2355 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2356 |
view |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2357 |
nodes: self allParsers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2358 |
forEach: [ :aParser | |labels| |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2359 |
labels := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2360 |
aParser name notNil ifTrue: [ labels add: aParser name ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2361 |
aParser visualizationGraphType notNil ifTrue: [ labels add: aParser visualizationGraphType ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2362 |
labels isEmpty ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2363 |
view shape label. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2364 |
view interaction forwarder. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2365 |
view nodes: labels asArray ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2366 |
]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2367 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2368 |
view shape: (ROLine new add: (ROArrow new size: 4) offset: 0.1). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2369 |
view edgesToAll: #children. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2370 |
view treeLayout |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2371 |
layered; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2372 |
on: ROLayoutEnd do: [ :evt | ROFocusView on: (view raw elementFromModel: self) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2373 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2374 |
view zoomInButton. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2375 |
view zoomOutButton.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2376 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2377 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''tg 8/25/2010 00:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2378 |
namedParsersDo: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2379 |
self namedParsersDo: aBlock seen: IdentitySet new!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2380 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2381 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''VincentBlondeau 2/14/2014 17:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2382 |
viewAllNamedParsersWithSelection: aCollectionOfNames previewing: aBlock on: view |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2383 |
view shape label |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2384 |
color: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2385 |
(aCollectionOfNames includes: each name) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2386 |
ifFalse: [ Color black ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2387 |
ifTrue: [ Color red ] ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2388 |
text: [ :each | each displayName ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2389 |
view interaction popupText: aBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2390 |
view interaction item: ''Explore'' action: #explore. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2391 |
view nodes: (self allParsers reject: [ :each | each name isEmptyOrNil ]). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2392 |
view edges: (self allParsers reject: [ :each | each name isEmptyOrNil ]) from: #yourself toAll: #namedParsers. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2393 |
view horizontalDominanceTreeLayout |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2394 |
verticalGap: 10; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2395 |
layered!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2396 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2397 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 17:21''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2398 |
visualizeStructureInGraph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2399 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2400 |
" |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2401 |
PPSmalltalkParser new visualize |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2402 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2403 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2404 |
" |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2405 |
| view | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2406 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2407 |
view := ROMondrianViewBuilder new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2408 |
self visualizeStructureInGraphOn: view. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2409 |
view open. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2410 |
^ view!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2411 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2412 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''VincentBlondeau 2/14/2014 17:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2413 |
viewAllNamedParsersOn: view |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2414 |
view shape |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2415 |
rectangleWithoutBorder; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2416 |
withText: #displayName. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2417 |
view nodes: (self allParsers reject: [ :each | each name isEmptyOrNil ]). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2418 |
view edgesToAll: #namedParsers. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2419 |
view horizontalDominanceTreeLayout layered!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2420 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2421 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''TudorGirba 12/6/2011 07:43''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2422 |
viewAllNamedParsersWithSelection: aCollectionOfNames on: view |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2423 |
self viewAllNamedParsersWithSelection: aCollectionOfNames previewing: [ :each | each name ] on: view!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2424 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2425 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''TudorGirba 12/14/2011 12:40''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2426 |
namedParsersDo: aBlock seen: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2427 |
self children do: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2428 |
(aSet includes: each) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2429 |
ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2430 |
aSet add: each. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2431 |
each name isEmptyOrNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2432 |
ifFalse: [ aBlock value: each ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2433 |
ifTrue: [ each namedParsersDo: aBlock seen: aSet ] ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2434 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2435 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''TudorGirba 6/5/2013 23:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2436 |
viewAllNamedParsers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2437 |
| view | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2438 |
view := ROMondrianViewBuilder new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2439 |
self viewAllNamedParsersOn: view. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2440 |
^ view open setLabel: ''All named parsers''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2441 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2442 |
!!PPParser methodsFor: ''*petitgui-mondrian'' stamp: ''tg 8/25/2010 00:31''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2443 |
namedParsers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2444 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2445 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2446 |
self namedParsersDo: [ :parser | result addLast: parser ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2447 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2448 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2449 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2450 |
!!PPParser methodsFor: ''*petitanalyzer-enumerating'' stamp: ''lr 4/13/2010 08:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2451 |
allParsers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2452 |
"Answer all the parse nodes of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2453 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2454 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2455 |
result := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2456 |
self allParsersDo: [ :parser | result addLast: parser ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2457 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2458 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2459 |
!!PPParser methodsFor: ''*petitanalyzer-enumerating'' stamp: ''lr 4/13/2010 08:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2460 |
allParsersDo: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2461 |
"Iterate over all the parse nodes of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2462 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2463 |
self allParsersDo: aBlock seen: IdentitySet new!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2464 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2465 |
!!PPParser methodsFor: ''*petitanalyzer-enumerating'' stamp: ''lr 4/13/2010 08:35''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2466 |
allParsersDo: aBlock seen: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2467 |
"Iterate over all the parse nodes of the receiver, do not visit and follow the ones contained in aSet." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2468 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2469 |
(aSet includes: self) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2470 |
ifTrue: [ ^ self ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2471 |
aSet add: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2472 |
aBlock value: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2473 |
self children |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2474 |
do: [ :each | each allParsersDo: aBlock seen: aSet ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2475 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2476 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2477 |
!!PPParser methodsFor: ''operators-convenience'' stamp: ''lr 2/19/2010 07:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2478 |
separatedBy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2479 |
"Answer a new parser that parses the receiver one or more times, separated by aParser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2480 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2481 |
^ (PPSequenceParser with: self with: (PPSequenceParser with: aParser with: self) star) ==> [ :nodes | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2482 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2483 |
result := Array new: 2 * nodes second size + 1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2484 |
result at: 1 put: nodes first. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2485 |
nodes second |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2486 |
keysAndValuesDo: [ :index :pair | result replaceFrom: 2 * index to: 2 * index + 1 with: pair startingAt: 1 ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2487 |
result ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2488 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2489 |
!!PPParser methodsFor: ''operators-convenience'' stamp: ''lr 2/19/2010 07:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2490 |
delimitedBy: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2491 |
"Answer a new parser that parses the receiver one or more times, separated and possibly ended by aParser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2492 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2493 |
^ (self separatedBy: aParser) , (aParser optional) ==> [ :node | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2494 |
node second isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2495 |
ifTrue: [ node first ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2496 |
ifFalse: [ node first copyWith: node second ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2497 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2498 |
!!PPParser methodsFor: ''operators-convenience'' stamp: ''lr 2/25/2012 16:54''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2499 |
withoutSeparators |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2500 |
"Filters out the separators from a parse result produced by one of the productions #delimitedBy: or #separatedBy:." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2501 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2502 |
^ self ==> [ :items | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2503 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2504 |
result := Array new: items size + 1 // 2. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2505 |
1 to: result size do: [ :index | result at: index put: (items at: 2 * index - 1) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2506 |
result ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2507 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2508 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2509 |
!!PPParser methodsFor: ''copying'' stamp: ''lr 4/19/2010 10:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2510 |
postCopy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2511 |
super postCopy. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2512 |
properties := properties copy!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2513 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2514 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2515 |
!!PPParser methodsFor: ''initialization'' stamp: ''lr 4/24/2008 10:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2516 |
initialize!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2517 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2518 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2519 |
!!PPParser methodsFor: ''*petitgui-morphic-creational'' stamp: ''lr 11/17/2009 21:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2520 |
newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2521 |
^ AlignmentMorph newColumn |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2522 |
cellPositioning: #topLeft; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2523 |
color: Color transparent; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2524 |
listCentering: #topLeft; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2525 |
vResizing: #shrinkWrap; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2526 |
hResizing: #shrinkWrap; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2527 |
layoutInset: 0; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2528 |
yourself!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2529 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2530 |
!!PPParser methodsFor: ''*petitgui-morphic-creational'' stamp: ''lr 11/17/2009 21:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2531 |
newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2532 |
^ AlignmentMorph newRow |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2533 |
cellPositioning: #topLeft; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2534 |
color: Color transparent; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2535 |
listCentering: #topLeft; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2536 |
vResizing: #shrinkWrap; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2537 |
hResizing: #shrinkWrap; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2538 |
layoutInset: 0; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2539 |
yourself!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2540 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2541 |
!!PPParser methodsFor: ''*petitgui-morphic-creational'' stamp: ''lr 11/17/2009 22:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2542 |
newSpacerMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2543 |
^ Morph new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2544 |
color: Color transparent; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2545 |
borderWidth: 0; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2546 |
extent: 7 @ 7; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2547 |
yourself!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2548 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2549 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2550 |
!!PPParser methodsFor: ''*petitanalyzer-querying'' stamp: ''lr 9/16/2010 17:55''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2551 |
followSets |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2552 |
"Answer a dictionary with all the parsers reachable from the receiver as key and their follow-set as value. The follow-set of a parser is the list of terminal parsers that can appear immediately to the right of that parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2553 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2554 |
| current previous continue firstSets followSets | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2555 |
current := previous := 0. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2556 |
firstSets := self firstSets. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2557 |
followSets := IdentityDictionary new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2558 |
self allParsersDo: [ :each | followSets at: each put: IdentitySet new ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2559 |
(followSets at: self) add: PPSentinel instance. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2560 |
[ followSets keysAndValuesDo: [ :parser :follow | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2561 |
parser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2562 |
followSets: followSets |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2563 |
firstSets: firstSets |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2564 |
into: follow ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2565 |
current := followSets |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2566 |
inject: 0 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2567 |
into: [ :result :each | result + each size ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2568 |
continue := previous < current. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2569 |
previous := current. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2570 |
continue ] whileTrue. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2571 |
^ followSets!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2572 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2573 |
!!PPParser methodsFor: ''*petitanalyzer-querying'' stamp: ''lr 10/22/2009 19:59''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2574 |
firstSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2575 |
"Answer the first-set of the receiver. Note, this implementation is inefficient when called on different receivers of the same grammar, instead use #firstSets to calculate the first-sets at once." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2576 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2577 |
^ self firstSets at: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2578 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2579 |
!!PPParser methodsFor: ''*petitanalyzer-querying'' stamp: ''lr 11/19/2009 23:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2580 |
cycleSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2581 |
"Answer a set of all nodes that are within one or more cycles of left-recursion. This is generally not a problem if at least one of the nodes is memoized, but it might make the grammar very inefficient and should be avoided if possible." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2582 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2583 |
| cycles | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2584 |
cycles := IdentitySet new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2585 |
self cycleSet: OrderedCollection new firstSets: self firstSets into: cycles. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2586 |
^ cycles!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2587 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2588 |
!!PPParser methodsFor: ''*petitanalyzer-querying'' stamp: ''JanKurs 5/31/2013 11:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2589 |
firstSets |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2590 |
"Answer a dictionary with all the parsers reachable from the receiver as key and their first-set as value. The first-set of a parser is the list of terminal parsers that begin the parser derivable from that parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2591 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2592 |
| firstSets | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2593 |
firstSets := IdentityDictionary new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2594 |
self allParsersDo: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2595 |
firstSets at: each put: (each isFirstSetTerminal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2596 |
ifTrue: [ IdentitySet with: each ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2597 |
ifFalse: [ IdentitySet new ]). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2598 |
each isNullable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2599 |
ifTrue: [ (firstSets at: each) add: PPSentinel instance ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2600 |
[ | changed tally | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2601 |
changed := false. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2602 |
firstSets keysAndValuesDo: [ :parser :first | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2603 |
tally := first size. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2604 |
parser firstSets: firstSets into: first. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2605 |
changed := changed or: [ tally ~= first size ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2606 |
changed ] whileTrue. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2607 |
^ firstSets!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2608 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2609 |
!!PPParser methodsFor: ''*petitanalyzer-querying'' stamp: ''lr 11/12/2009 21:13''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2610 |
followSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2611 |
"Answer the follow-set of the receiver starting at the receiver. Note, this implementation is inefficient when called on different receivers of the same grammar, instead use #followSets to calculate the follow-sets at once." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2612 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2613 |
^ self followSets at: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2614 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2615 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2616 |
!!PPParser methodsFor: ''pp-context'' stamp: ''JanKurs 11/11/2013 09:30''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2617 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2618 |
"Parse aStream with the receiving parser and answer the parse-result or an instance of PPFailure. Override this method in subclasses to specify custom parse behavior. Do not call this method from outside, instead use #parse:." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2619 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2620 |
self subclassResponsibility!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2621 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2622 |
!!PPParser methodsFor: ''pp-context'' stamp: ''JanKurs 3/17/2014 13:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2623 |
debugWithContext: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2624 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2625 |
^ self enableDebug parseWithContext: aPPContext !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2626 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2627 |
!!PPParser methodsFor: ''pp-context'' stamp: ''JanKurs 3/11/2014 13:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2628 |
updateContext: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2629 |
"nothing to do"!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2630 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2631 |
!!PPParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 13:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2632 |
parse: anObject withContext: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2633 |
"Parse anObject with the receiving parser and answer the parse-result or an instance of PPFailure." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2634 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2635 |
aPPContext stream: anObject asPetitStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2636 |
^ self parseWithContext: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2637 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2638 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2639 |
!!PPParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 13:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2640 |
parse: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2641 |
"Parse anObject with the receiving parser and answer the parse-result or an instance of PPFailure." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2642 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2643 |
^ self parse: anObject withContext: PPContext new!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2644 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2645 |
!!PPParser methodsFor: ''pp-context'' stamp: ''JanKurs 3/19/2014 16:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2646 |
parseWithContext: context |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2647 |
context root: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2648 |
self updateContext: context. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2649 |
^ self parseOn: context!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2650 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2651 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2652 |
!!PPParser methodsFor: ''accessing'' stamp: ''lr 10/21/2009 16:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2653 |
children |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2654 |
"Answer a set of child parsers that could follow the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2655 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2656 |
^ #()!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2657 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2658 |
!!PPParser methodsFor: ''accessing'' stamp: ''lr 4/19/2010 10:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2659 |
name: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2660 |
self propertyAt: #name put: aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2661 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2662 |
!!PPParser methodsFor: ''accessing'' stamp: ''lr 4/19/2010 10:35''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2663 |
name |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2664 |
"Answer the production name of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2665 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2666 |
^ self propertyAt: #name ifAbsent: [ nil ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2667 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2668 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2669 |
!!PPParser methodsFor: ''*petitanalyzer-private'' stamp: ''lr 11/19/2009 23:47''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2670 |
cycleSet: aDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2671 |
"PRIVATE: Answer the children that could be part of a cycle-set with the receiver, subclasses might restrict the number of children returned. aDictionary is pre-calcualted first-sets." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2672 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2673 |
^ self children!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2674 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2675 |
!!PPParser methodsFor: ''*petitanalyzer-private'' stamp: ''lr 5/22/2010 10:45''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2676 |
cycleSet: aStack firstSets: aDictionary into: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2677 |
"PRIVATE: Try to find a cycle, where aStack contains the previously visited parsers. The method returns quickly when the receiver is a terminal, terminals cannot be part of a cycle. If aStack already contains the receiver, then we are in a cycle. In this case we don''t process the children further and add the nodes to aSet." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2678 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2679 |
| index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2680 |
self isTerminal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2681 |
ifTrue: [ ^ self ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2682 |
(index := aStack indexOf: self) > 0 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2683 |
ifTrue: [ ^ aSet addAll: (aStack copyFrom: index to: aStack size) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2684 |
aStack addLast: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2685 |
(self cycleSet: aDictionary) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2686 |
do: [ :each | each cycleSet: aStack firstSets: aDictionary into: aSet ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2687 |
aStack removeLast!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2688 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2689 |
!!PPParser methodsFor: ''*petitanalyzer-private'' stamp: ''lr 11/12/2009 21:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2690 |
firstSets: aFirstDictionary into: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2691 |
"PRIVATE: Try to add additional elements to the first-set aSet of the receiver, use the incomplete aFirstDictionary." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2692 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2693 |
self children do: [ :parser | aSet addAll: (aFirstDictionary at: parser) ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2694 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2695 |
!!PPParser methodsFor: ''*petitanalyzer-private'' stamp: ''lr 11/12/2009 21:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2696 |
followSets: aFollowDictionary firstSets: aFirstDictionary into: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2697 |
"PRIVATE: Try to add additional elements to the follow-set aSet of the receiver, use the incomplete aFollowDictionary and the complete aFirstDictionary." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2698 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2699 |
self children do: [ :parser | (aFollowDictionary at: parser) addAll: aSet ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2700 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2701 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2702 |
!!PPParser methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 1/16/2014 15:41''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2703 |
debug: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2704 |
"Parse anObject with the receiving parser and answer the parse-result or an instance of PPFailure." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2705 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2706 |
^ self enableDebug parse: anObject asPetitStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2707 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2708 |
!!PPParser methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 3/18/2014 12:21''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2709 |
enableDebuggerOutput |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2710 |
self debuggerOutput: true.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2711 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2712 |
!!PPParser methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 4/22/2013 18:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2713 |
debuggerOutput: aBoolean |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2714 |
self propertyAt: #debuggerOutput put: aBoolean!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2715 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2716 |
!!PPParser methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 3/18/2014 12:21''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2717 |
disableDebuggerOutput |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2718 |
self debuggerOutput: false. !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2719 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2720 |
!!PPParser methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 3/18/2014 17:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2721 |
enableDebug |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2722 |
| root newParser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2723 |
root := PPParserDebuggerResult new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2724 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2725 |
newParser := self transform: [:each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2726 |
each >=> [:stream :continuation | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2727 |
| result child | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2728 |
child := PPParserDebuggerResult new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2729 |
parser: each; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2730 |
parent: root. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2731 |
root := root children add: child. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2732 |
child start: stream position + 1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2733 |
child showChildren: each debuggerOutput. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2734 |
result := continuation value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2735 |
child end: stream position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2736 |
root result: result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2737 |
root := root parent. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2738 |
result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2739 |
] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2740 |
]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2741 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2742 |
^ PPDebugParser on: newParser root: root. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2743 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2744 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2745 |
!!PPParser methodsFor: ''*petitgui-debug'' stamp: ''JanKurs 4/22/2013 18:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2746 |
debuggerOutput |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2747 |
^ self propertyAt: #debuggerOutput ifAbsentPut: true.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2748 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2749 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2750 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 2/19/2010 07:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2751 |
negate |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2752 |
"Answer a new parser consumes any input token but the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2753 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2754 |
^ self not , #any asParser ==> #second!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2755 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2756 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 9/1/2010 22:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2757 |
optional |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2758 |
"Answer a new parser that parses the receiver, if possible." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2759 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2760 |
^ PPOptionalParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2761 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2762 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 12/3/2010 11:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2763 |
def: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2764 |
"Redefine the receiver as the argument aParser. This method is useful when defining recursive parsers: instantiate a PPUnresolvedParser and later redefine it with another one." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2765 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2766 |
^ self becomeForward: (aParser name: self name)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2767 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2768 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 10/23/2008 14:05''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2769 |
wrapped |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2770 |
"Answer a new parser that is simply wrapped." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2771 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2772 |
^ PPDelegateParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2773 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2774 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 5/31/2010 16:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2775 |
memoized |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2776 |
"Answer a new memoized parser, for refraining redundant computations. This ensures polynomial time O(n^4) for left-recursive grammars and O(n^3) for non left-recursive grammars in the worst case. Not necessary for most grammars that are carefully written and in O(n) anyway." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2777 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2778 |
^ PPMemoizedParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2779 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2780 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 5/31/2010 15:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2781 |
and |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2782 |
"Answer a new parser (logical and-predicate) that succeeds whenever the receiver does, but never consumes input." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2783 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2784 |
^ PPAndParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2785 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2786 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 4/14/2010 11:46''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2787 |
/ aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2788 |
"Answer a new parser that parses the receiver, if the receiver fails try with aParser (ordered-choice)." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2789 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2790 |
^ PPChoiceParser with: self with: aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2791 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2792 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 4/30/2010 12:13''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2793 |
end |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2794 |
"Answer a new parser that succeeds at the end of the input and return the result of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2795 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2796 |
^ PPEndOfInputParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2797 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2798 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 5/31/2010 15:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2799 |
not |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2800 |
"Answer a new parser (logical not-predicate) that succeeds whenever the receiver fails, but never consumes input." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2801 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2802 |
^ PPNotParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2803 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2804 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 4/14/2010 11:53''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2805 |
| aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2806 |
"Answer a new parser that either parses the receiver or aParser. Fail if both pass or fail (exclusive choice, unordered choice)." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2807 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2808 |
^ (self not , aParser) / (aParser not , self) ==> #second!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2809 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2810 |
!!PPParser methodsFor: ''operators'' stamp: ''lr 9/23/2008 18:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2811 |
, aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2812 |
"Answer a new parser that parses the receiver followed by aParser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2813 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2814 |
^ PPSequenceParser with: self with: aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2815 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2816 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2817 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2818 |
PPParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2819 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2820 |
!!PPParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2821 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2822 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2823 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2824 |
!!PPParser class methodsFor: ''instance creation'' stamp: ''lr 10/27/2008 11:17''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2825 |
named: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2826 |
^ self new name: aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2827 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2828 |
!!PPParser class methodsFor: ''instance creation'' stamp: ''lr 4/18/2008 14:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2829 |
new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2830 |
^ self basicNew initialize!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2831 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2832 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2833 |
PPParser subclass: #PPPluggableParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2834 |
instanceVariableNames: ''block'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2835 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2836 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2837 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2838 |
!!PPPluggableParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2839 |
A pluggable parser that passes the parser stream into a block. This enables users to perform manual parsing or to embed other parser frameworks into PetitParser. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2840 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2841 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2842 |
block <BlockClosure> The pluggable one-argument block. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2843 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2844 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2845 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2846 |
!!PPPluggableParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 6/18/2010 14:09''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2847 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2848 |
^ (super match: aParser inContext: aDictionary seen: anIdentitySet) and: [ self block = aParser block ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2849 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2850 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2851 |
!!PPPluggableParser methodsFor: ''initialization'' stamp: ''lr 5/2/2010 16:52''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2852 |
initializeOn: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2853 |
block := aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2854 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2855 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2856 |
!!PPPluggableParser methodsFor: ''pp-context'' stamp: ''JanKurs 11/11/2013 09:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2857 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2858 |
| position result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2859 |
position := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2860 |
result := block value: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2861 |
result isPetitFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2862 |
ifTrue: [ aPPContext restore: position ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2863 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2864 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2865 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2866 |
!!PPPluggableParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:41''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2867 |
displayName |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2868 |
^ String streamContents: [ :stream | block decompile shortPrintOn: stream ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2869 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2870 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2871 |
!!PPPluggableParser methodsFor: ''accessing'' stamp: ''lr 4/30/2010 11:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2872 |
block |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2873 |
"Answer the pluggable block." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2874 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2875 |
^ block!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2876 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2877 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2878 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2879 |
PPPluggableParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2880 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2881 |
!!PPPluggableParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2882 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2883 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2884 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2885 |
!!PPPluggableParser class methodsFor: ''instance creation'' stamp: ''lr 5/2/2010 16:52''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2886 |
on: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2887 |
^ self new initializeOn: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2888 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2889 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2890 |
PPParser subclass: #PPFailingParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2891 |
instanceVariableNames: ''message'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2892 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2893 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2894 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2895 |
!!PPFailingParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2896 |
A parser that consumes nothing and always fails. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2897 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2898 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2899 |
message <String> The failure message.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2900 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2901 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2902 |
!!PPFailingParser methodsFor: ''initialization'' stamp: ''lr 5/2/2010 19:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2903 |
setMessage: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2904 |
message := aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2905 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2906 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2907 |
!!PPFailingParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 16:59''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2908 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2909 |
^ PPFailure message: message context: aPPContext!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2910 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2911 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2912 |
!!PPFailingParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/6/2009 18:43''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2913 |
displayName |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2914 |
^ message!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2915 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2916 |
!!PPFailingParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2917 |
displayColor |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2918 |
^ Color red!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2919 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2920 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2921 |
!!PPFailingParser methodsFor: ''printing'' stamp: ''lr 4/16/2010 21:27''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2922 |
printNameOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2923 |
super printNameOn: aStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2924 |
aStream nextPutAll: '', ''; print: message!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2925 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2926 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2927 |
!!PPFailingParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 4/30/2010 12:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2928 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2929 |
^ (super match: aParser inContext: aDictionary seen: anIdentitySet) and: [ self message = aParser message ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2930 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2931 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2932 |
!!PPFailingParser methodsFor: ''accessing'' stamp: ''lr 4/30/2010 11:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2933 |
message |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2934 |
"Answer the error message of the receiving parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2935 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2936 |
^ message!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2937 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2938 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2939 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2940 |
PPFailingParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2941 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2942 |
!!PPFailingParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2943 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2944 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2945 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2946 |
!!PPFailingParser class methodsFor: ''instance creation'' stamp: ''lr 5/2/2010 19:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2947 |
message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2948 |
^ self new setMessage: aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2949 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2950 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2951 |
PPParser subclass: #PPLiteralParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2952 |
instanceVariableNames: ''literal message'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2953 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2954 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2955 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2956 |
!!PPLiteralParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2957 |
Abstract literal parser that parses some kind of literal type (to be specified by subclasses). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2958 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2959 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2960 |
literal <Object> The literal object to be parsed. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2961 |
message <String> The error message to be generated. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2962 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2963 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2964 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2965 |
!!PPLiteralParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 9/15/2010 12:08''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2966 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2967 |
^ (super match: aParser inContext: aDictionary seen: anIdentitySet) and: [ self literal = aParser literal and: [ self message = aParser message ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2968 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2969 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2970 |
!!PPLiteralParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 17:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2971 |
visualizationGraphType |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2972 |
^ literal printString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2973 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2974 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2975 |
!!PPLiteralParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:19''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2976 |
displayName |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2977 |
^ literal printString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2978 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2979 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2980 |
!!PPLiteralParser methodsFor: ''accessing'' stamp: ''lr 5/2/2010 13:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2981 |
message |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2982 |
"Answer the failure message." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2983 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2984 |
^ message!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2985 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2986 |
!!PPLiteralParser methodsFor: ''accessing'' stamp: ''lr 5/2/2010 13:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2987 |
literal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2988 |
"Answer the parsed literal." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2989 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2990 |
^ literal!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2991 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2992 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2993 |
!!PPLiteralParser methodsFor: ''operators'' stamp: ''lr 6/1/2010 22:24''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2994 |
caseInsensitive |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2995 |
"Answer a parser that can parse the receiver case-insensitive." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2996 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2997 |
self subclassResponsibility!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2998 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2999 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3000 |
!!PPLiteralParser methodsFor: ''initialization'' stamp: ''lr 5/2/2010 13:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3001 |
initializeOn: anObject message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3002 |
literal := anObject. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3003 |
message := aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3004 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3005 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3006 |
!!PPLiteralParser methodsFor: ''printing'' stamp: ''lr 4/16/2010 16:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3007 |
printNameOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3008 |
super printNameOn: aStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3009 |
aStream nextPutAll: '', ''; print: literal!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3010 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3011 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3012 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3013 |
PPLiteralParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3014 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3015 |
!!PPLiteralParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3016 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3017 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3018 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3019 |
!!PPLiteralParser class methodsFor: ''instance creation'' stamp: ''lr 1/7/2010 15:29''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3020 |
on: anObject message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3021 |
^ self new initializeOn: anObject message: aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3022 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3023 |
!!PPLiteralParser class methodsFor: ''instance creation'' stamp: ''lr 1/7/2010 15:30''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3024 |
on: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3025 |
^ self on: anObject message: anObject printString , '' expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3026 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3027 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3028 |
PPLiteralParser subclass: #PPLiteralObjectParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3029 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3030 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3031 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3032 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3033 |
!!PPLiteralObjectParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3034 |
A parser that accepts a single literal object, such as a character. This is the same as the predicate parser ''PPPredicateParser expect: literal'' but slightly more efficient.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3035 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3036 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3037 |
!!PPLiteralObjectParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/9/2009 14:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3038 |
exampleOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3039 |
aStream nextPut: literal!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3040 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3041 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3042 |
!!PPLiteralObjectParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 17:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3043 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3044 |
^ (aPPContext stream atEnd not and: [ literal = aPPContext stream uncheckedPeek ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3045 |
ifFalse: [ PPFailure message: message context: aPPContext ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3046 |
ifTrue: [ aPPContext stream next ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3047 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3048 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3049 |
!!PPLiteralObjectParser methodsFor: ''operators'' stamp: ''lr 8/18/2010 20:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3050 |
caseInsensitive |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3051 |
"Answer a parser that can parse the receiver case-insensitive." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3052 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3053 |
literal asUppercase = literal asLowercase ifTrue: [ ^ self ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3054 |
^ PPPredicateObjectParser on: [ :value | literal sameAs: value ] message: message!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3055 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3056 |
!!PPLiteralObjectParser methodsFor: ''operators'' stamp: ''lr 4/28/2011 20:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3057 |
negate |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3058 |
^ (PPPredicateObjectParser expect: literal message: message) negate!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3059 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3060 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3061 |
PPParser subclass: #PPPredicateParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3062 |
instanceVariableNames: ''predicate predicateMessage negated negatedMessage'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3063 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3064 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3065 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3066 |
!!PPPredicateParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3067 |
An abstract parser that accepts if a given predicate holds. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3068 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3069 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3070 |
predicate <BlockClosure> The block testing for the predicate. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3071 |
predicateMessage <String> The error message of the predicate. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3072 |
negated <BlockClosure> The block testing for the negation of the predicate. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3073 |
negatedMessage <String> The error message of the negated predicate.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3074 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3075 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3076 |
!!PPPredicateParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 9/15/2010 11:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3077 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3078 |
^ (super match: aParser inContext: aDictionary seen: anIdentitySet) and: [ self block = aParser block and: [ self message = aParser message ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3079 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3080 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3081 |
!!PPPredicateParser methodsFor: ''printing'' stamp: ''lr 5/2/2010 13:37''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3082 |
printNameOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3083 |
super printNameOn: aStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3084 |
aStream nextPutAll: '', ''; print: predicateMessage!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3085 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3086 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3087 |
!!PPPredicateParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 5/1/2010 17:05''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3088 |
exampleOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3089 |
"Produce a random character that is valid. If there are characters in the alpha-numeric range prefer those over all others." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3090 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3091 |
| valid normal | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3092 |
valid := Character allCharacters |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3093 |
select: [ :char | self matches: (String with: char) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3094 |
normal := valid |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3095 |
select: [ :char | char asInteger < 127 and: [ char isAlphaNumeric ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3096 |
aStream nextPut: (normal isEmpty |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3097 |
ifTrue: [ valid atRandom ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3098 |
ifFalse: [ normal atRandom ])!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3099 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3100 |
!!PPPredicateParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 5/2/2010 19:35''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3101 |
displayName |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3102 |
^ predicateMessage!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3103 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3104 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3105 |
!!PPPredicateParser methodsFor: ''accessing'' stamp: ''lr 5/2/2010 13:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3106 |
message |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3107 |
"Answer the failure message." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3108 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3109 |
^ predicateMessage!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3110 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3111 |
!!PPPredicateParser methodsFor: ''accessing'' stamp: ''lr 5/2/2010 13:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3112 |
block |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3113 |
"Answer the predicate block of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3114 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3115 |
^ predicate!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3116 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3117 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3118 |
PPPredicateParser subclass: #PPPredicateObjectParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3119 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3120 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3121 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3122 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3123 |
!!PPPredicateObjectParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3124 |
A parser that accepts if a given predicate on one element of the input sequence holds.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3125 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3126 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3127 |
!!PPPredicateObjectParser methodsFor: ''operators'' stamp: ''lr 6/12/2010 09:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3128 |
negate |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3129 |
"Answer a parser that is the negation of the receiving predicate parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3130 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3131 |
^ self class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3132 |
on: negated message: negatedMessage |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3133 |
negated: predicate message: predicateMessage!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3134 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3135 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3136 |
!!PPPredicateObjectParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 17:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3137 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3138 |
^ (aPPContext stream atEnd not and: [ predicate value: aPPContext stream uncheckedPeek ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3139 |
ifFalse: [ PPFailure message: predicateMessage context: aPPContext ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3140 |
ifTrue: [ aPPContext stream next ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3141 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3142 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3143 |
!!PPPredicateObjectParser methodsFor: ''initialization'' stamp: ''lr 6/12/2010 09:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3144 |
initializeOn: aBlock message: aString negated: aNegatedBlock message: aNegatedString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3145 |
predicate := aBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3146 |
predicateMessage := aString. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3147 |
negated := aNegatedBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3148 |
negatedMessage := aNegatedString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3149 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3150 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3151 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3152 |
PPPredicateObjectParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3153 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3154 |
!!PPPredicateObjectParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3155 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3156 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3157 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3158 |
!!PPPredicateObjectParser class methodsFor: ''*petitregex-chars'' stamp: ''lr 8/30/2010 14:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3159 |
control |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3160 |
^ self chars: ((0 to: 31) collect: [ :each | Character value: each ]) message: ''control character expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3161 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3162 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3163 |
!!PPPredicateObjectParser class methodsFor: ''factory-objects'' stamp: ''lr 8/25/2010 10:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3164 |
expect: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3165 |
^ self expect: anObject message: anObject printString , '' expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3166 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3167 |
!!PPPredicateObjectParser class methodsFor: ''factory-objects'' stamp: ''lr 4/1/2011 20:05''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3168 |
anyExceptAnyOf: aCollection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3169 |
^ self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3170 |
on: [ :each | (aCollection includes: each) not ] message: ''any except '' , aCollection printString , '' expected'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3171 |
negated: [ :each | aCollection includes: each ] message: aCollection printString , '' not expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3172 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3173 |
!!PPPredicateObjectParser class methodsFor: ''factory-objects'' stamp: ''lr 4/1/2011 20:05''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3174 |
anyOf: aCollection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3175 |
^ self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3176 |
on: [ :each | aCollection includes: each ] message: ''any of '' , aCollection printString , '' expected'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3177 |
negated: [ :each | (aCollection includes: each) not ] message: ''none of '' , aCollection printString , ''expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3178 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3179 |
!!PPPredicateObjectParser class methodsFor: ''factory-objects'' stamp: ''lr 6/12/2010 09:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3180 |
any |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3181 |
^ self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3182 |
on: [ :each | true ] message: ''input expected'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3183 |
negated: [ :each | false ] message: ''no input expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3184 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3185 |
!!PPPredicateObjectParser class methodsFor: ''factory-objects'' stamp: ''lr 6/12/2010 09:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3186 |
between: min and: max |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3187 |
^ self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3188 |
on: [ :each | each >= min and: [ each <= max ] ] message: min printString , ''..'' , max printString , '' expected'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3189 |
negated: [ :each | each < min or: [ each > max ] ] message: min printString , ''..'' , max printString , '' not expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3190 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3191 |
!!PPPredicateObjectParser class methodsFor: ''factory-objects'' stamp: ''lr 8/25/2010 10:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3192 |
expect: anObject message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3193 |
^ self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3194 |
on: [ :each | each = anObject ] message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3195 |
negated: [ :each | each ~= anObject ] message: ''no '' , aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3196 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3197 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3198 |
!!PPPredicateObjectParser class methodsFor: ''instance creation'' stamp: ''lr 6/12/2010 09:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3199 |
on: aBlock message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3200 |
^ self on: aBlock message: aString negated: [ :each | (aBlock value: each) not ] message: ''no '' , aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3201 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3202 |
!!PPPredicateObjectParser class methodsFor: ''instance creation'' stamp: ''lr 6/12/2010 09:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3203 |
on: aBlock message: aString negated: aNegatedBlock message: aNegatedString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3204 |
^ self new initializeOn: aBlock message: aString negated: aNegatedBlock message: aNegatedString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3205 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3206 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3207 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3208 |
char: aCharacter |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3209 |
^ self expect: aCharacter message: (String with: $" with: aCharacter with: $") , '' expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3210 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3211 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3212 |
punctuation |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3213 |
^ self chars: ''.,"''''?!!!!;:#$%&()*+-/<>=@[]\^_{}|~'' message: ''punctuation expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3214 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3215 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3216 |
blank |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3217 |
^ self chars: (String with: Character space with: Character tab) message: ''blank expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3218 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3219 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3220 |
hex |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3221 |
^ self |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3222 |
on: (PPCharSetPredicate on: [ :char | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3223 |
(char between: $0 and: $9) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3224 |
or: [ (char between: $a and: $f) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3225 |
or: [ (char between: $A and: $F) ] ] ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3226 |
message: ''hex digit expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3227 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3228 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3229 |
newline |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3230 |
^ self chars: (String with: Character cr with: Character lf) message: ''newline expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3231 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3232 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3233 |
word |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3234 |
^ self on: (PPCharSetPredicate on: [ :char | char isAlphaNumeric ]) message: ''letter or digit expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3235 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3236 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 6/12/2010 09:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3237 |
lf |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3238 |
^ self char: Character lf!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3239 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3240 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3241 |
digit |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3242 |
^ self on: (PPCharSetPredicate on: [ :char | char isDigit ]) message: ''digit expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3243 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3244 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:05''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3245 |
letter |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3246 |
^ self on: (PPCharSetPredicate on: [ :char | char isLetter ]) message: ''letter expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3247 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3248 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3249 |
uppercase |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3250 |
^ self on: (PPCharSetPredicate on: [ :char | char isUppercase ]) message: ''uppercase letter expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3251 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3252 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3253 |
cr |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3254 |
^ self char: Character cr message: ''carriage return expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3255 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3256 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3257 |
space |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3258 |
^ self on: (PPCharSetPredicate on: [ :char | char isSeparator ]) message: ''separator expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3259 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3260 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3261 |
lowercase |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3262 |
^ self on: (PPCharSetPredicate on: [ :char | char isLowercase ]) message: ''lowercase letter expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3263 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3264 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3265 |
tab |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3266 |
^ self char: Character tab message: ''tab expected''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3267 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3268 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 11:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3269 |
chars: aCollection message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3270 |
^ self on: (PPCharSetPredicate on: [ :char | aCollection includes: char ]) message: aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3271 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3272 |
!!PPPredicateObjectParser class methodsFor: ''factory-chars'' stamp: ''lr 8/25/2010 10:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3273 |
char: aCharacter message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3274 |
^ self expect: aCharacter message: aString!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3275 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3276 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3277 |
PPPredicateParser subclass: #PPPredicateSequenceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3278 |
instanceVariableNames: ''size'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3279 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3280 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3281 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3282 |
!!PPPredicateSequenceParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3283 |
A parser that accepts if a given predicate on an arbitrary number of elements of the input sequence holds. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3284 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3285 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3286 |
size <Integer> The number of elements to consume.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3287 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3288 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3289 |
!!PPPredicateSequenceParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 6/18/2010 14:09''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3290 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3291 |
^ (super match: aParser inContext: aDictionary seen: anIdentitySet) and: [ self size = aParser size ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3292 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3293 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3294 |
!!PPPredicateSequenceParser methodsFor: ''operators'' stamp: ''lr 6/12/2010 09:14''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3295 |
negate |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3296 |
"Answer a parser that is the negation of the receiving predicate parser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3297 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3298 |
^ self class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3299 |
on: negated message: negatedMessage |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3300 |
negated: predicate message: predicateMessage |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3301 |
size: size!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3302 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3303 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3304 |
!!PPPredicateSequenceParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 17:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3305 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3306 |
| position result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3307 |
position := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3308 |
result := aPPContext stream next: size. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3309 |
(result size = size and: [ predicate value: result ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3310 |
ifTrue: [ ^ result ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3311 |
aPPContext restore: position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3312 |
^ PPFailure message: predicateMessage context: aPPContext!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3313 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3314 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3315 |
!!PPPredicateSequenceParser methodsFor: ''accessing'' stamp: ''lr 6/12/2010 08:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3316 |
size |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3317 |
"Answer the sequence size of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3318 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3319 |
^ size!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3320 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3321 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3322 |
!!PPPredicateSequenceParser methodsFor: ''initialization'' stamp: ''lr 6/12/2010 09:13''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3323 |
initializeOn: aBlock message: aString negated: aNegatedBlock message: aNegatedString size: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3324 |
predicate := aBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3325 |
predicateMessage := aString. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3326 |
negated := aNegatedBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3327 |
negatedMessage := aNegatedString. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3328 |
size := anInteger !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3329 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3330 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3331 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3332 |
PPPredicateSequenceParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3333 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3334 |
!!PPPredicateSequenceParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3335 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3336 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3337 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3338 |
!!PPPredicateSequenceParser class methodsFor: ''instance creation'' stamp: ''lr 6/12/2010 09:14''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3339 |
on: aBlock message: aString negated: aNegatedBlock message: aNegatedString size: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3340 |
^ self new initializeOn: aBlock message: aString negated: aNegatedBlock message: aNegatedString size: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3341 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3342 |
!!PPPredicateSequenceParser class methodsFor: ''instance creation'' stamp: ''lr 6/12/2010 09:14''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3343 |
on: aBlock message: aString size: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3344 |
^ self on: aBlock message: aString negated: [ :each | (aBlock value: each) not ] message: ''no '' , aString size: anInteger !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3345 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3346 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3347 |
PPParser subclass: #PPDelegateParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3348 |
instanceVariableNames: ''parser'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3349 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3350 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3351 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3352 |
!!PPDelegateParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3353 |
A parser that delegates to another parser. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3354 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3355 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3356 |
parser <PPParser> The parser to delegate to.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3357 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3358 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3359 |
!!PPDelegateParser methodsFor: ''accessing'' stamp: ''lr 10/21/2009 16:37''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3360 |
children |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3361 |
^ Array with: parser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3362 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3363 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3364 |
!!PPDelegateParser methodsFor: ''*petitanalyzer-transforming'' stamp: ''lr 4/13/2010 09:39''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3365 |
replace: aParser with: anotherParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3366 |
super replace: aParser with: anotherParser. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3367 |
parser == aParser ifTrue: [ parser := anotherParser ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3368 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3369 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3370 |
!!PPDelegateParser methodsFor: ''pp-context'' stamp: ''JanKurs 11/11/2013 09:31''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3371 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3372 |
^ parser parseOn: aPPContext!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3373 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3374 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3375 |
!!PPDelegateParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/9/2009 14:27''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3376 |
exampleOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3377 |
parser exampleOn: aStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3378 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3379 |
!!PPDelegateParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:20''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3380 |
displayDescription |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3381 |
^ nil!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3382 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3383 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3384 |
!!PPDelegateParser methodsFor: ''initialization'' stamp: ''lr 4/20/2008 16:23''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3385 |
setParser: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3386 |
parser := aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3387 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3388 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3389 |
!!PPDelegateParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 11/18/2009 11:21''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3390 |
morphicShapeSeen: aSet depth: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3391 |
^ self morphicShapeSeen: aSet depth: anInteger do: [ :cc | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3392 |
self displayDescription isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3393 |
ifTrue: [ cc value: parser ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3394 |
ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3395 |
self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3396 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3397 |
addMorphBack: (self newSpacerMorph height: 10); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3398 |
addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3399 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3400 |
addMorphBack: (self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3401 |
color: (self backgroundForDepth: anInteger); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3402 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3403 |
addMorphBack: (cc value: parser); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3404 |
addMorphBack: (self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3405 |
hResizing: #spaceFill; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3406 |
addMorphBack: (self newSpacerMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3407 |
width: 20; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3408 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3409 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3410 |
hResizing: #spaceFill; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3411 |
listCentering: #center; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3412 |
addMorphBack: (self newSpacerMorph); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3413 |
addMorphBack: (StringMorph new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3414 |
contents: self displayDescription; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3415 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3416 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3417 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3418 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3419 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3420 |
addMorphBack: (self newSpacerMorph height: 10); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3421 |
addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3422 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3423 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3424 |
yourself ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3425 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3426 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3427 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3428 |
PPDelegateParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3429 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3430 |
!!PPDelegateParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3431 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3432 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3433 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3434 |
!!PPDelegateParser class methodsFor: ''instance creation'' stamp: ''lr 4/20/2008 16:22''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3435 |
on: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3436 |
^ self new setParser: aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3437 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3438 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3439 |
PPDelegateParser subclass: #PPAndParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3440 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3441 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3442 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3443 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3444 |
!!PPAndParser commentStamp: ''TudorGirba 2/27/2011 22:22'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3445 |
The and-predicate, a parser that succeeds whenever its delegate does, but does not consume the input stream [Parr 1994, 1995].!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3446 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3447 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3448 |
!!PPAndParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 5/1/2010 16:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3449 |
exampleOn: aStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3450 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3451 |
!!PPAndParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:17''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3452 |
displayDescription |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3453 |
^ ''and''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3454 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3455 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3456 |
!!PPAndParser methodsFor: ''operators'' stamp: ''lr 5/1/2010 16:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3457 |
and |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3458 |
^ self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3459 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3460 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3461 |
!!PPAndParser methodsFor: ''pp-context'' stamp: ''JanKurs 1/15/2014 15:50''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3462 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3463 |
| element position | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3464 |
position := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3465 |
element := parser parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3466 |
aPPContext restore: position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3467 |
^ element!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3468 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3469 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3470 |
PPDelegateParser subclass: #PPTrimmingParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3471 |
instanceVariableNames: ''trimmer'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3472 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3473 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3474 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3475 |
!!PPTrimmingParser commentStamp: ''lr 4/6/2010 19:27'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3476 |
A parser that silently consumes spaces before and after the delegate parser.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3477 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3478 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3479 |
!!PPTrimmingParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 4/14/2010 20:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3480 |
exampleOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3481 |
super exampleOn: aStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3482 |
aStream nextPut: Character space!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3483 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3484 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3485 |
!!PPTrimmingParser methodsFor: ''pp-context'' stamp: ''JanKurs 1/15/2014 15:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3486 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3487 |
| position element | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3488 |
position := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3489 |
[ (trimmer parseOn: aPPContext) isPetitFailure ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3490 |
whileFalse. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3491 |
element := parser parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3492 |
element isPetitFailure ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3493 |
aPPContext restore: position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3494 |
^ element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3495 |
[ (trimmer parseOn: aPPContext) isPetitFailure ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3496 |
whileFalse. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3497 |
^ element!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3498 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3499 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3500 |
!!PPTrimmingParser methodsFor: ''initialization'' stamp: ''lr 7/31/2010 12:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3501 |
setTrimmer: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3502 |
trimmer := aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3503 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3504 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3505 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3506 |
PPTrimmingParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3507 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3508 |
!!PPTrimmingParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3509 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3510 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3511 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3512 |
!!PPTrimmingParser class methodsFor: ''instance creation'' stamp: ''lr 7/31/2010 12:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3513 |
on: aParser trimmer: aTrimParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3514 |
^ self new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3515 |
setParser: aParser; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3516 |
setTrimmer: aTrimParser; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3517 |
yourself!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3518 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3519 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3520 |
PPDelegateParser subclass: #PPMemoizedParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3521 |
instanceVariableNames: ''buffer context'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3522 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3523 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3524 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3525 |
!!PPMemoizedParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3526 |
A memoized parser, for refraining redundant computations. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3527 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3528 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3529 |
stream <PositionableStream> The stream of the associated memento objects. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3530 |
buffer <Array of: PPMemento> The buffer of memento objects. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3531 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3532 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3533 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3534 |
!!PPMemoizedParser methodsFor: ''operators'' stamp: ''lr 4/2/2009 19:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3535 |
memoized |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3536 |
"Ther is no point in memoizing more than once." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3537 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3538 |
^ self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3539 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3540 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3541 |
!!PPMemoizedParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 13:20''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3542 |
reset: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3543 |
context := aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3544 |
buffer := Dictionary new.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3545 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3546 |
!!PPMemoizedParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 17:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3547 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3548 |
| memento contextMemento aStream | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3549 |
"TODO: JK memoizing needs review!!!!" |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3550 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3551 |
contextMemento := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3552 |
context == aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3553 |
ifFalse: [ self reset: aPPContext ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3554 |
memento := (buffer at: contextMemento ifAbsentPut: [ PPMemento new ]). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3555 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3556 |
memento contextMemento isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3557 |
ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3558 |
aStream := aPPContext stream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3559 |
memento result: (aStream size - aStream position + 2 < memento count |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3560 |
ifTrue: [ PPFailure message: ''overflow'' context: aPPContext ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3561 |
ifFalse: [ memento increment. parser parseOn: aPPContext ]). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3562 |
memento contextMemento: aPPContext remember ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3563 |
ifFalse: [ context restore: memento contextMemento ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3564 |
^ memento result.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3565 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3566 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3567 |
PPDelegateParser subclass: #PPEndOfInputParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3568 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3569 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3570 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3571 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3572 |
!!PPEndOfInputParser commentStamp: ''lr 4/18/2008 13:46'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3573 |
A parser that succeeds only at the end of the input stream.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3574 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3575 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3576 |
!!PPEndOfInputParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 16:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3577 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3578 |
| position result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3579 |
position := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3580 |
result := parser parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3581 |
(result isPetitFailure or: [ aPPContext stream atEnd ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3582 |
ifTrue: [ ^ result ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3583 |
result := PPFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3584 |
message: ''end of input expected'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3585 |
context: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3586 |
aPPContext restore: position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3587 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3588 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3589 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3590 |
!!PPEndOfInputParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:18''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3591 |
displayDescription |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3592 |
^ ''end of input''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3593 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3594 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3595 |
!!PPEndOfInputParser methodsFor: ''operators'' stamp: ''lr 12/7/2009 08:53''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3596 |
end |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3597 |
^ self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3598 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3599 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3600 |
PPDelegateParser subclass: #PPActionParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3601 |
instanceVariableNames: ''block'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3602 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3603 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3604 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3605 |
!!PPActionParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3606 |
A parser that performs an action block with the successful parse result of the delegate. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3607 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3608 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3609 |
block <BlockClosure> The action block to be executed. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3610 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3611 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3612 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3613 |
!!PPActionParser methodsFor: ''initialization'' stamp: ''lr 5/2/2010 16:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3614 |
setBlock: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3615 |
block := aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3616 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3617 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3618 |
!!PPActionParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 16:41''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3619 |
visualizationGraphType |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3620 |
^ ''[]''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3621 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3622 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3623 |
!!PPActionParser methodsFor: ''pp-context'' stamp: ''JanKurs 11/11/2013 09:31''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3624 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3625 |
| element | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3626 |
^ (element := parser parseOn: aPPContext) isPetitFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3627 |
ifFalse: [ block value: element ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3628 |
ifTrue: [ element ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3629 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3630 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3631 |
!!PPActionParser methodsFor: ''accessing'' stamp: ''lr 4/30/2010 11:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3632 |
block |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3633 |
"Answer the action block of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3634 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3635 |
^ block!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3636 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3637 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3638 |
!!PPActionParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 5/7/2011 15:08''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3639 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3640 |
^ (super match: aParser inContext: aDictionary seen: anIdentitySet) and: [ self block = aParser block ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3641 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3642 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3643 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3644 |
PPActionParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3645 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3646 |
!!PPActionParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3647 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3648 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3649 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3650 |
!!PPActionParser class methodsFor: ''instance creation'' stamp: ''lr 5/2/2010 16:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3651 |
on: aParser block: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3652 |
^ (self on: aParser) setBlock: aBlock!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3653 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3654 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3655 |
PPActionParser subclass: #PPWrappingParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3656 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3657 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3658 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3659 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3660 |
!!PPWrappingParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3661 |
A parser that performs an action block upon activation with the stream and a continuation block.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3662 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3663 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3664 |
!!PPWrappingParser methodsFor: ''pp-context'' stamp: ''JanKurs 11/11/2013 09:31''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3665 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3666 |
^ block value: aPPContext value: [ parser parseOn: aPPContext ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3667 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3668 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3669 |
PPParser subclass: #PPListParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3670 |
instanceVariableNames: ''parsers'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3671 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3672 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3673 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3674 |
!!PPListParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3675 |
Abstract parser that parses a list of things in some way (to be specified by the subclasses). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3676 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3677 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3678 |
parsers <SequenceableCollection of: PPParser> A sequence of other parsers to delegate to.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3679 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3680 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3681 |
!!PPListParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 4/30/2010 08:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3682 |
copyInContext: aDictionary seen: aSeenDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3683 |
| copy copies | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3684 |
aSeenDictionary at: self ifPresent: [ :value | ^ value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3685 |
copy := aSeenDictionary at: self put: self copy. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3686 |
copies := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3687 |
parsers do: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3688 |
| result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3689 |
result := each |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3690 |
copyInContext: aDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3691 |
seen: aSeenDictionary. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3692 |
result isCollection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3693 |
ifTrue: [ copies addAll: result ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3694 |
ifFalse: [ copies add: result ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3695 |
^ copy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3696 |
setParsers: copies; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3697 |
yourself!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3698 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3699 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3700 |
!!PPListParser methodsFor: ''*petitanalyzer-transforming'' stamp: ''lr 5/22/2010 10:24''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3701 |
replace: aParser with: anotherParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3702 |
super replace: aParser with: anotherParser. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3703 |
parsers keysAndValuesDo: [ :index :parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3704 |
parser == aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3705 |
ifTrue: [ parsers at: index put: anotherParser ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3706 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3707 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3708 |
!!PPListParser methodsFor: ''initialization'' stamp: ''lr 4/29/2010 10:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3709 |
setParsers: aCollection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3710 |
parsers := aCollection asArray!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3711 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3712 |
!!PPListParser methodsFor: ''initialization'' stamp: ''lr 4/29/2010 10:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3713 |
initialize |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3714 |
super initialize. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3715 |
self setParsers: #()!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3716 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3717 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3718 |
!!PPListParser methodsFor: ''accessing'' stamp: ''lr 10/21/2009 16:37''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3719 |
children |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3720 |
^ parsers!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3721 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3722 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3723 |
!!PPListParser methodsFor: ''copying'' stamp: ''lr 9/17/2008 22:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3724 |
copyWith: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3725 |
^ self species withAll: (parsers copyWith: aParser)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3726 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3727 |
!!PPListParser methodsFor: ''copying'' stamp: ''lr 5/22/2010 10:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3728 |
postCopy |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3729 |
super postCopy. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3730 |
parsers := parsers copy!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3731 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3732 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3733 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3734 |
PPListParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3735 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3736 |
!!PPListParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3737 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3738 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3739 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3740 |
!!PPListParser class methodsFor: ''instance creation'' stamp: ''lr 9/23/2008 18:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3741 |
with: aFirstParser with: aSecondParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3742 |
^ self withAll: (Array with: aFirstParser with: aSecondParser)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3743 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3744 |
!!PPListParser class methodsFor: ''instance creation'' stamp: ''lr 5/3/2010 20:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3745 |
with: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3746 |
^ self withAll: (Array with: aParser)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3747 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3748 |
!!PPListParser class methodsFor: ''instance creation'' stamp: ''lr 4/29/2010 10:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3749 |
withAll: aCollection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3750 |
^ self basicNew setParsers: aCollection!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3751 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3752 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3753 |
PPListParser subclass: #PPChoiceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3754 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3755 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3756 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3757 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3758 |
!!PPChoiceParser commentStamp: ''lr 4/18/2008 15:35'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3759 |
A parser that uses the first parser that succeeds.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3760 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3761 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3762 |
!!PPChoiceParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 16:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3763 |
visualizationGraphType |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3764 |
^ ''/''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3765 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3766 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3767 |
!!PPChoiceParser methodsFor: ''operators'' stamp: ''lr 9/17/2008 00:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3768 |
/ aRule |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3769 |
^ self copyWith: aRule!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3770 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3771 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3772 |
!!PPChoiceParser methodsFor: ''pp-context'' stamp: ''JanKurs 11/11/2013 09:31''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3773 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3774 |
"This is optimized code that avoids unnecessary block activations, do not change. When all choices fail, the last failure is answered." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3775 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3776 |
| element | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3777 |
1 to: parsers size do: [ :index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3778 |
element := (parsers at: index) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3779 |
parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3780 |
element isPetitFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3781 |
ifFalse: [ ^ element ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3782 |
^ element!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3783 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3784 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3785 |
!!PPChoiceParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 5/2/2010 20:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3786 |
exampleOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3787 |
"If there is already a lot written, try to pick an empty possiblity." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3788 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3789 |
aStream position > 512 ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3790 |
(parsers anySatisfy: [ :each | each isNullable ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3791 |
ifTrue: [ ^ self ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3792 |
parsers atRandom exampleOn: aStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3793 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3794 |
!!PPChoiceParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 11/18/2009 11:14''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3795 |
morphicShapeSeen: aSet depth: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3796 |
^ self morphicShapeSeen: aSet depth: anInteger do: [ :cc | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3797 |
| morph | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3798 |
morph := self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3799 |
cellInset: 5; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3800 |
yourself. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3801 |
self children do: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3802 |
morph addMorphBack: (self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3803 |
hResizing: #spaceFill; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3804 |
addMorphBack: (cc value: each); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3805 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3806 |
hResizing: #spaceFill; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3807 |
addMorphBack: (self newSpacerMorph height: 10); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3808 |
addMorphBack: ((LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3809 |
hResizing: #spaceFill; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3810 |
minWidth: 20; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3811 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3812 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3813 |
yourself) ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3814 |
morph fullBounds. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3815 |
self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3816 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3817 |
addMorphBack: (self newSpacerMorph height: 10); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3818 |
addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3819 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3820 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3821 |
addMorphBack: (self newSpacerMorph width: 1; height: 10); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3822 |
addMorphBack: (LineMorph from: 0 @ 0 to: 0 @ (morph height - 23) color: Color black width: 1); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3823 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3824 |
addMorphBack: morph; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3825 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3826 |
addMorphBack: (self newSpacerMorph width: 1; height: 10); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3827 |
addMorphBack: (LineMorph from: 0 @ (morph height - 23) to: 0 @ 0 color: Color black width: 1) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3828 |
makeForwardArrow; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3829 |
width: 1; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3830 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3831 |
yourself ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3832 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3833 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3834 |
PPDelegateParser subclass: #PPNotParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3835 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3836 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3837 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3838 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3839 |
!!PPNotParser commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3840 |
The not-predicate, a parser that succeeds whenever its delegate does not, but consumes no input [Parr 1994, 1995].!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3841 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3842 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3843 |
!!PPNotParser methodsFor: ''*petitanalyzer-testing'' stamp: ''JanKurs 5/31/2013 11:50''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3844 |
isFirstSetTerminal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3845 |
^ true!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3846 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3847 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3848 |
!!PPNotParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 17:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3849 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3850 |
| element position | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3851 |
position := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3852 |
element := parser parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3853 |
aPPContext restore: position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3854 |
^ element isPetitFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3855 |
ifFalse: [ PPFailure message: '''' context: aPPContext ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3856 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3857 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3858 |
!!PPNotParser methodsFor: ''*petitanalyzer-private'' stamp: ''JanKurs 5/31/2013 11:50''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3859 |
firstSets: aFirstDictionary into: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3860 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3861 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3862 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3863 |
!!PPNotParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/11/2009 21:09''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3864 |
exampleOn: aStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3865 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3866 |
!!PPNotParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:17''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3867 |
displayDescription |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3868 |
^ ''not''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3869 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3870 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3871 |
PPLiteralParser subclass: #PPLiteralSequenceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3872 |
instanceVariableNames: ''size'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3873 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3874 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3875 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3876 |
!!PPLiteralSequenceParser commentStamp: ''lr 12/4/2009 18:39'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3877 |
A parser accepts a sequence of literal objects, such as a String. This is an optimization to avoid having to compose longer sequences from PPSequenceParser.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3878 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3879 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3880 |
!!PPLiteralSequenceParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 16:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3881 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3882 |
| memento result | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3883 |
memento := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3884 |
result := aPPContext stream next: size. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3885 |
literal = result ifTrue: [ ^ result ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3886 |
aPPContext restore: memento. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3887 |
^ PPFailure message: message context: aPPContext!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3888 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3889 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3890 |
!!PPLiteralSequenceParser methodsFor: ''initialization'' stamp: ''lr 6/1/2010 22:21''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3891 |
initializeOn: anObject message: aString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3892 |
super initializeOn: anObject message: aString. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3893 |
size := literal size!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3894 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3895 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3896 |
!!PPLiteralSequenceParser methodsFor: ''accessing'' stamp: ''lr 9/15/2010 11:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3897 |
size |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3898 |
"Answer the sequence size of the receiver." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3899 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3900 |
^ size!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3901 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3902 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3903 |
!!PPLiteralSequenceParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/9/2009 14:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3904 |
exampleOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3905 |
aStream nextPutAll: literal!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3906 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3907 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3908 |
!!PPLiteralSequenceParser methodsFor: ''operators'' stamp: ''lr 8/18/2010 20:16''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3909 |
caseInsensitive |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3910 |
"Answer a parser that can parse the receiver case-insensitive." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3911 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3912 |
literal asUppercase = literal asLowercase ifTrue: [ ^ self ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3913 |
^ PPPredicateSequenceParser on: [ :value | literal sameAs: value ] message: message size: size!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3914 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3915 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3916 |
PPDelegateParser subclass: #PPOptionalParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3917 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3918 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3919 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3920 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3921 |
!!PPOptionalParser commentStamp: ''lr 4/3/2011 14:46'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3922 |
A parser that optionally parsers its delegate, or answers nil.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3923 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3924 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3925 |
!!PPOptionalParser methodsFor: ''*petitanalyzer-testing'' stamp: ''lr 9/1/2010 22:10''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3926 |
isNullable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3927 |
^ true!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3928 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3929 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3930 |
!!PPOptionalParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 16:44''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3931 |
visualizationGraphType |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3932 |
^ ''?''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3933 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3934 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3935 |
!!PPOptionalParser methodsFor: ''pp-context'' stamp: ''JanKurs 3/19/2014 15:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3936 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3937 |
| element | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3938 |
element := parser parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3939 |
^ element isPetitFailure ifFalse: [ element ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3940 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3941 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3942 |
PPDelegateParser subclass: #PPFlattenParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3943 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3944 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3945 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3946 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3947 |
!!PPFlattenParser commentStamp: ''lr 11/22/2009 13:09'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3948 |
A parser that answers a flat copy of the range my delegate parses.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3949 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3950 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3951 |
!!PPFlattenParser methodsFor: ''private'' stamp: ''lr 2/25/2013 23:31''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3952 |
on: aCollection start: aStartInteger stop: aStopInteger value: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3953 |
^ aCollection copyFrom: aStartInteger to: aStopInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3954 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3955 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3956 |
!!PPFlattenParser methodsFor: ''pp-context'' stamp: ''JanKurs 1/15/2014 15:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3957 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3958 |
| start element | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3959 |
start := aPPContext stream position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3960 |
element := parser parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3961 |
element isPetitFailure ifTrue: [ ^ element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3962 |
^ self on: aPPContext stream collection start: start + 1 stop: aPPContext stream position value: element!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3963 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3964 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3965 |
PPFlattenParser subclass: #PPTokenParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3966 |
instanceVariableNames: ''tokenClass'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3967 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3968 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3969 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3970 |
!!PPTokenParser commentStamp: ''lr 2/25/2013 23:31'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3971 |
A parser that answers a token with the value of my delegate parses. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3972 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3973 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3974 |
tokenClass <PPToken class> The token sub-class to be used.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3975 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3976 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3977 |
!!PPTokenParser methodsFor: ''private'' stamp: ''lr 4/6/2010 19:18''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3978 |
defaultTokenClass |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3979 |
^ PPToken!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3980 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3981 |
!!PPTokenParser methodsFor: ''private'' stamp: ''lr 2/25/2013 23:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3982 |
on: aCollection start: aStartInteger stop: aStopInteger value: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3983 |
^ self tokenClass on: aCollection start: aStartInteger stop: aStopInteger value: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3984 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3985 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3986 |
!!PPTokenParser methodsFor: ''initialization'' stamp: ''lr 4/6/2010 19:19''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3987 |
initialize |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3988 |
tokenClass := self defaultTokenClass |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3989 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3990 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3991 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3992 |
!!PPTokenParser methodsFor: ''accessing'' stamp: ''lr 4/6/2010 19:23''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3993 |
tokenClass |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3994 |
^ tokenClass!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3995 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3996 |
!!PPTokenParser methodsFor: ''accessing'' stamp: ''lr 4/6/2010 19:24''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3997 |
tokenClass: aTokenClass |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3998 |
tokenClass := aTokenClass!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3999 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4000 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4001 |
!!PPTokenParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 6/18/2010 14:09''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4002 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4003 |
^ (super match: aParser inContext: aDictionary seen: anIdentitySet) and: [ self tokenClass = aParser tokenClass ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4004 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4005 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4006 |
PPDelegateParser subclass: #PPRepeatingParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4007 |
instanceVariableNames: ''min max'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4008 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4009 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4010 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4011 |
!!PPRepeatingParser commentStamp: ''lr 4/3/2011 14:45'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4012 |
An abstract parser that repeatedly parses between ''min'' and ''max'' instances of its delegate. The default configuration parses an infinite number of elements, as ''min'' is set to 0 and ''max'' to infinity (SmallInteger maxVal). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4013 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4014 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4015 |
min <Integer> The minimum number of repetitions. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4016 |
max <Integer> The maximum number of repetitions.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4017 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4018 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4019 |
!!PPRepeatingParser methodsFor: ''*petitanalyzer-matching'' stamp: ''lr 6/18/2010 14:09''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4020 |
match: aParser inContext: aDictionary seen: anIdentitySet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4021 |
^ (super match: aParser inContext: aDictionary seen: anIdentitySet) and: [ self min = aParser min and: [ self max = aParser max ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4022 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4023 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4024 |
!!PPRepeatingParser methodsFor: ''initialization'' stamp: ''lr 4/1/2011 21:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4025 |
setMax: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4026 |
max := anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4027 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4028 |
!!PPRepeatingParser methodsFor: ''initialization'' stamp: ''lr 4/1/2011 21:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4029 |
setMin: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4030 |
min := anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4031 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4032 |
!!PPRepeatingParser methodsFor: ''initialization'' stamp: ''lr 4/1/2011 21:06''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4033 |
initialize |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4034 |
super initialize. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4035 |
self setMin: 0; setMax: SmallInteger maxVal!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4036 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4037 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4038 |
!!PPRepeatingParser methodsFor: ''accessing'' stamp: ''lr 4/30/2010 11:08''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4039 |
max |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4040 |
"Answer the maximum number of repetitions." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4041 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4042 |
^ max!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4043 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4044 |
!!PPRepeatingParser methodsFor: ''accessing'' stamp: ''lr 4/30/2010 11:08''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4045 |
min |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4046 |
"Answer the minimum number of repetitions." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4047 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4048 |
^ min!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4049 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4050 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4051 |
!!PPRepeatingParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/11/2009 20:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4052 |
exampleOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4053 |
"Perform the minimal repeatitions required, and a random amount of more if possible and if not that much output has been produced yet." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4054 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4055 |
min timesRepeat: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4056 |
super exampleOn: aStream ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4057 |
(max - min min: 5) atRandom timesRepeat: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4058 |
aStream position > 512 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4059 |
ifTrue: [ ^ self ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4060 |
super exampleOn: aStream ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4061 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4062 |
!!PPRepeatingParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/13/2009 14:18''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4063 |
displayDescription |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4064 |
^ String streamContents: [ :stream | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4065 |
min = 0 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4066 |
ifFalse: [ stream print: min; nextPutAll: ''..'' ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4067 |
max = SmallInteger maxVal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4068 |
ifTrue: [ stream nextPut: $* ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4069 |
ifFalse: [ stream print: max ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4070 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4071 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4072 |
!!PPRepeatingParser methodsFor: ''*petitanalyzer-testing'' stamp: ''lr 10/21/2009 12:13''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4073 |
isNullable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4074 |
^ min = 0!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4075 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4076 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4077 |
!!PPRepeatingParser methodsFor: ''*petitanalyzer-private'' stamp: ''JanKurs 5/31/2013 11:51''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4078 |
followSets: aFollowDictionary firstSets: aFirstDictionary into: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4079 |
| firstSet | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4080 |
super followSets: aFollowDictionary firstSets: aFirstDictionary into: aSet. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4081 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4082 |
firstSet := aFirstDictionary at: self. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4083 |
self children do: [:p | (aFollowDictionary at: p) addAll: (firstSet reject: [:each | each isNullable]) ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4084 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4085 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4086 |
!!PPRepeatingParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 16:44''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4087 |
visualizationGraphType |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4088 |
^ ''*''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4089 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4090 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4091 |
!!PPRepeatingParser methodsFor: ''printing'' stamp: ''lr 6/3/2010 14:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4092 |
printOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4093 |
super printOn: aStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4094 |
aStream nextPutAll: '' [''; print: min; nextPutAll: '', ''; nextPutAll: (max = SmallInteger maxVal |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4095 |
ifTrue: [ ''*'' ] ifFalse: [ max printString ]); nextPut: $]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4096 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4097 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4098 |
PPRepeatingParser subclass: #PPPossessiveRepeatingParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4099 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4100 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4101 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4102 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4103 |
!!PPPossessiveRepeatingParser commentStamp: ''lr 4/3/2011 14:35'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4104 |
The default repeating parser with standard PEG semantics (i.e. possessive, blind, eager).!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4105 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4106 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4107 |
!!PPPossessiveRepeatingParser methodsFor: ''pp-context'' stamp: ''JanKurs 1/15/2014 15:43''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4108 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4109 |
| start element elements | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4110 |
start := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4111 |
elements := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4112 |
[ elements size < min ] whileTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4113 |
(element := parser parseOn: aPPContext) isPetitFailure ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4114 |
aPPContext restore: start. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4115 |
^ element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4116 |
elements addLast: element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4117 |
[ elements size < max ] whileTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4118 |
(element := parser parseOn: aPPContext) isPetitFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4119 |
ifTrue: [ ^ elements asArray ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4120 |
elements addLast: element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4121 |
^ elements asArray!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4122 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4123 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4124 |
PPRepeatingParser subclass: #PPLimitedRepeatingParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4125 |
instanceVariableNames: ''limit'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4126 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4127 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4128 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4129 |
!!PPLimitedRepeatingParser commentStamp: ''lr 4/3/2011 14:37'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4130 |
An abstract parser that repeatedly parses between ''min'' and ''max'' instances of my delegate and that requires the input to be completed with a specified parser ''limit''. Subclasses provide repeating behavior as typically seen in regular expression implementations (non-blind). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4131 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4132 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4133 |
limit <PPParser> The parser to complete the input with.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4134 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4135 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4136 |
!!PPLimitedRepeatingParser methodsFor: ''*petitanalyzer-transforming'' stamp: ''lr 4/4/2011 18:46''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4137 |
replace: aParser with: anotherParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4138 |
super replace: aParser with: anotherParser. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4139 |
limit == aParser ifTrue: [ limit := anotherParser ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4140 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4141 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4142 |
!!PPLimitedRepeatingParser methodsFor: ''initialization'' stamp: ''lr 4/2/2011 10:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4143 |
setLimit: aParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4144 |
limit := aParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4145 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4146 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4147 |
!!PPLimitedRepeatingParser methodsFor: ''accessing'' stamp: ''lr 4/4/2011 18:46''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4148 |
children |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4149 |
^ Array with: parser with: limit!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4150 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4151 |
!!PPLimitedRepeatingParser methodsFor: ''accessing'' stamp: ''lr 4/2/2011 10:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4152 |
limit |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4153 |
"Answer the parser that limits (or ends) this repetition." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4154 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4155 |
^ limit!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4156 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4157 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4158 |
!!PPLimitedRepeatingParser methodsFor: ''pp-context'' stamp: ''JanKurs 1/15/2014 16:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4159 |
matchesLimitOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4160 |
| element position | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4161 |
position := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4162 |
element := limit parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4163 |
aPPContext restore: position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4164 |
^ element isPetitFailure not!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4165 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4166 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4167 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4168 |
PPLimitedRepeatingParser class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4169 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4170 |
!!PPLimitedRepeatingParser class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4171 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4172 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4173 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4174 |
!!PPLimitedRepeatingParser class methodsFor: ''instance creation'' stamp: ''lr 4/3/2011 14:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4175 |
on: aParser limit: aLimitParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4176 |
^ (self on: aParser) setLimit: aLimitParser!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4177 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4178 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4179 |
PPLimitedRepeatingParser subclass: #PPGreedyRepeatingParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4180 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4181 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4182 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4183 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4184 |
!!PPGreedyRepeatingParser commentStamp: ''lr 4/3/2011 15:08'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4185 |
A greedy repeating parser, commonly seen in regular expression implementations. It aggressively consumes as much input as possible and then backtracks to meet the ''limit'' condition. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4186 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4187 |
This class essentially implements the iterative version of the following recursive parser composition: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4188 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4189 |
| parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4190 |
parser := PPChoiceParser new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4191 |
parser setParsers: (Array |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4192 |
with: (self , parser map: [ :each :rest | rest addFirst: each; yourself ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4193 |
with: (limit and ==> [ :each | OrderedCollection new ])). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4194 |
^ parser ==> [ :rest | rest asArray ]!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4195 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4196 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4197 |
!!PPGreedyRepeatingParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 16:59''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4198 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4199 |
| start element elements positions | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4200 |
start := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4201 |
elements := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4202 |
[ elements size < min ] whileTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4203 |
(element := parser parseOn: aPPContext) isPetitFailure ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4204 |
aPPContext restore: start. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4205 |
^ element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4206 |
elements addLast: element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4207 |
positions := OrderedCollection with: aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4208 |
[ elements size < max and: [ (element := parser parseOn: aPPContext) isPetitFailure not ] ] whileTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4209 |
elements addLast: element. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4210 |
positions addLast: aPPContext remember ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4211 |
[ positions isEmpty ] whileFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4212 |
aPPContext restore: positions last. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4213 |
element := limit parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4214 |
element isPetitFailure ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4215 |
aPPContext restore: positions last. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4216 |
^ elements asArray ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4217 |
elements isEmpty ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4218 |
aPPContext restore: start. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4219 |
^ element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4220 |
elements removeLast. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4221 |
positions removeLast ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4222 |
aPPContext restore: start. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4223 |
^ PPFailure message: ''overflow'' context: aPPContext at: start!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4224 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4225 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4226 |
PPParser subclass: #PPEpsilonParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4227 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4228 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4229 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4230 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4231 |
!!PPEpsilonParser commentStamp: ''lr 5/15/2008 15:09'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4232 |
A parser that consumes nothing and always succeeds.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4233 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4234 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4235 |
!!PPEpsilonParser methodsFor: ''*petitanalyzer-testing'' stamp: ''lr 10/21/2009 12:11''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4236 |
isNullable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4237 |
^ true!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4238 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4239 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4240 |
!!PPEpsilonParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 11/18/2009 11:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4241 |
morphicShapeSeen: aSet depth: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4242 |
^ self morphicShapeSeen: aSet depth: anInteger do: [ :cc | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4243 |
self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4244 |
addMorphBack: (self newColumnMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4245 |
addMorphBack: (self newSpacerMorph height: 10); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4246 |
addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4247 |
yourself); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4248 |
yourself ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4249 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4250 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4251 |
!!PPEpsilonParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/6/2009 18:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4252 |
displayName |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4253 |
^ ''epsilon''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4254 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4255 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4256 |
!!PPEpsilonParser methodsFor: ''parsing'' stamp: ''lr 2/7/2010 20:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4257 |
parseOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4258 |
^ nil!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4259 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4260 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4261 |
PPLimitedRepeatingParser subclass: #PPLazyRepeatingParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4262 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4263 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4264 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4265 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4266 |
!!PPLazyRepeatingParser commentStamp: ''lr 4/3/2011 15:08'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4267 |
A lazy repeating parser, commonly seen in regular expression implementations. It limits its consumption to meet the ''limit'' condition as early as possible. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4268 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4269 |
This class essentially implements the iterative version of the following recursive parser composition: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4270 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4271 |
| parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4272 |
parser := PPChoiceParser new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4273 |
parser setParsers: (Array |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4274 |
with: (limit and ==> [ :each | OrderedCollection new ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4275 |
with: (self , parser map: [ :each :rest | rest addFirst: each; yourself ])). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4276 |
^ parser ==> [ :rest | rest asArray ]!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4277 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4278 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4279 |
!!PPLazyRepeatingParser methodsFor: ''pp-context'' stamp: ''JanKurs 8/19/2014 17:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4280 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4281 |
| start element elements | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4282 |
start := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4283 |
elements := OrderedCollection new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4284 |
[ elements size < min ] whileTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4285 |
(element := parser parseOn: aPPContext) isPetitFailure ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4286 |
aPPContext restore: start. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4287 |
^ element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4288 |
elements addLast: element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4289 |
[ self matchesLimitOn: aPPContext ] whileFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4290 |
elements size < max ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4291 |
aPPContext restore: start. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4292 |
^ PPFailure message: ''overflow'' context: aPPContext at: start ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4293 |
element := parser parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4294 |
element isPetitFailure ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4295 |
aPPContext restore: start. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4296 |
^ element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4297 |
elements addLast: element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4298 |
^ elements asArray!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4299 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4300 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4301 |
PPListParser subclass: #PPSequenceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4302 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4303 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4304 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4305 |
category: ''PetitParser-Parsers''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4306 |
!!PPSequenceParser commentStamp: ''lr 4/18/2008 15:34'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4307 |
A parser that parses a sequence of parsers.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4308 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4309 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4310 |
!!PPSequenceParser methodsFor: ''operators-mapping'' stamp: ''lr 5/6/2011 20:27''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4311 |
map: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4312 |
^ aBlock numArgs = self children size |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4313 |
ifTrue: [ self ==> [ :nodes | aBlock valueWithArguments: nodes ] ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4314 |
ifFalse: [ self error: aBlock numArgs asString , '' arguments expected.'' ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4315 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4316 |
!!PPSequenceParser methodsFor: ''operators-mapping'' stamp: ''lr 1/8/2010 12:01''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4317 |
permutation: anArrayOfIntegers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4318 |
"Answer a permutation of the receivers sequence." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4319 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4320 |
anArrayOfIntegers do: [ :index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4321 |
(index isInteger and: [ index between: 1 and: parsers size ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4322 |
ifFalse: [ self error: ''Invalid permutation index: '' , index printString ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4323 |
^ self ==> [ :nodes | anArrayOfIntegers collect: [ :index | nodes at: index ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4324 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4325 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4326 |
!!PPSequenceParser methodsFor: ''*petitgui-morphic'' stamp: ''lr 11/17/2009 21:54''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4327 |
morphicShapeSeen: aSet depth: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4328 |
^ self morphicShapeSeen: aSet depth: anInteger do: [ :cc | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4329 |
self children |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4330 |
inject: self newRowMorph |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4331 |
into: [ :result :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4332 |
result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4333 |
addMorphBack: (cc value: each); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4334 |
yourself ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4335 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4336 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4337 |
!!PPSequenceParser methodsFor: ''*petitgui-accessing'' stamp: ''lr 11/9/2009 14:24''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4338 |
exampleOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4339 |
parsers do: [ :each | each exampleOn: aStream ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4340 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4341 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4342 |
!!PPSequenceParser methodsFor: ''pp-context'' stamp: ''JanKurs 11/11/2013 09:43''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4343 |
parseOn: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4344 |
"This is optimized code that avoids unnecessary block activations, do not change." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4345 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4346 |
| start elements element | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4347 |
start := aPPContext remember. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4348 |
elements := Array new: parsers size. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4349 |
1 to: parsers size do: [ :index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4350 |
element := (parsers at: index) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4351 |
parseOn: aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4352 |
element isPetitFailure ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4353 |
aPPContext restore: start. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4354 |
^ element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4355 |
elements at: index put: element ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4356 |
^ elements!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4357 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4358 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4359 |
!!PPSequenceParser methodsFor: ''operators'' stamp: ''lr 9/17/2008 00:17''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4360 |
, aRule |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4361 |
^ self copyWith: aRule!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4362 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4363 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4364 |
!!PPSequenceParser methodsFor: ''*petitanalyzer-private'' stamp: ''lr 12/9/2010 10:37''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4365 |
cycleSet: aDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4366 |
| firstSet | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4367 |
1 to: parsers size do: [ :index | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4368 |
firstSet := aDictionary at: (parsers at: index). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4369 |
(firstSet anySatisfy: [ :each | each isNullable ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4370 |
ifFalse: [ ^ parsers copyFrom: 1 to: index ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4371 |
^ parsers!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4372 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4373 |
!!PPSequenceParser methodsFor: ''*petitanalyzer-private'' stamp: ''lr 9/16/2010 17:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4374 |
firstSets: aFirstDictionary into: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4375 |
| nullable | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4376 |
parsers do: [ :parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4377 |
nullable := false. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4378 |
(aFirstDictionary at: parser) do: [ :each | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4379 |
each isNullable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4380 |
ifTrue: [ nullable := true ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4381 |
ifFalse: [ aSet add: each ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4382 |
nullable |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4383 |
ifFalse: [ ^ self ] ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4384 |
aSet add: PPSentinel instance!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4385 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4386 |
!!PPSequenceParser methodsFor: ''*petitanalyzer-private'' stamp: ''lr 8/14/2010 13:51''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4387 |
followSets: aFollowDictionary firstSets: aFirstDictionary into: aSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4388 |
parsers keysAndValuesDo: [ :index :parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4389 |
| followSet firstSet | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4390 |
followSet := aFollowDictionary at: parser. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4391 |
index = parsers size |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4392 |
ifTrue: [ followSet addAll: aSet ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4393 |
ifFalse: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4394 |
(self class withAll: (parsers |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4395 |
copyFrom: index + 1 to: parsers size)) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4396 |
firstSets: aFirstDictionary |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4397 |
into: (firstSet := IdentitySet new). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4398 |
(firstSet anySatisfy: [ :each | each isNullable ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4399 |
ifTrue: [ followSet addAll: aSet ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4400 |
followSet addAll: (firstSet |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4401 |
reject: [ :each | each isNullable ]) ] ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4402 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4403 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4404 |
!!PPSequenceParser methodsFor: ''*petitgui-mondrian'' stamp: ''AlexandreBergel 12/18/2013 16:44''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4405 |
visualizationGraphType |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4406 |
^ '',''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4407 |
Object subclass: #PPFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4408 |
instanceVariableNames: ''message context position'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4409 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4410 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4411 |
category: ''PetitParser-Core''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4412 |
!!PPFailure commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4413 |
The failure object in PetitParser. It is the only class that responds to #isPetitFailure with true. It contains an error message and a position of the occurrence of the failure. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4414 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4415 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4416 |
message <String> The error message of this failure. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4417 |
position <Integer> The position of this failure in the input stream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4418 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4419 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4420 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4421 |
!!PPFailure methodsFor: ''*petitgui'' stamp: ''JanKurs 8/19/2014 16:39''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4422 |
sampleIn: composite |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4423 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4424 |
(composite text) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4425 |
title: ''Sample''; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4426 |
display: [:res | res findStream contents ifNil: [''''] ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4427 |
allowNil.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4428 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4429 |
!!PPFailure methodsFor: ''*petitgui'' stamp: ''JanKurs 8/19/2014 16:40''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4430 |
treeViewIn: composite |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4431 |
composite tree |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4432 |
title: ''Execution Traces''; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4433 |
format: [:resultNode | resultNode formattedText ]; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4434 |
children: [:resultNode | resultNode showChildren |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4435 |
ifTrue: [ resultNode children ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4436 |
ifFalse: [ #() ] ]. !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4437 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4438 |
!!PPFailure methodsFor: ''*petitgui'' stamp: ''JanKurs 8/19/2014 16:53''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4439 |
gtDebugView: composite |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4440 |
<gtInspectorPresentationOrder: 40> |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4441 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4442 |
| browser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4443 |
browser := |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4444 |
composite tabulator. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4445 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4446 |
browser title: ''Debug View''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4447 |
browser row: #tree; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4448 |
row: #source. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4449 |
browser transmit |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4450 |
fromOutsideEntityPort; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4451 |
toOutsidePort: #debugResult; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4452 |
transformed: [ :failure | failure debugResult ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4453 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4454 |
browser transmit |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4455 |
from: #tree; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4456 |
to: #source port: #selectionInterval; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4457 |
transformed: [:debuggingResult | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4458 |
debuggingResult ifNotNil: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4459 |
debuggingResult start to: debuggingResult end] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4460 |
]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4461 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4462 |
browser transmit |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4463 |
fromOutsidePort: #debugResult; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4464 |
to: #source; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4465 |
andShow: [ :a | self sampleIn: a ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4466 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4467 |
browser transmit |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4468 |
fromOutsidePort: #debugResult; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4469 |
to: #tree; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4470 |
andShow: [ :a | self treeViewIn: a ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4471 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4472 |
browser startOn: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4473 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4474 |
!!PPFailure methodsFor: ''*petitgui'' stamp: ''JanKurs 8/19/2014 16:54''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4475 |
debugResult |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4476 |
^ context root enableDebug parse: context stream reset!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4477 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4478 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4479 |
!!PPFailure methodsFor: ''testing'' stamp: ''lr 2/7/2010 20:54''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4480 |
isPetitFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4481 |
"I am the only class that should implement this method to return true." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4482 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4483 |
^ true!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4484 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4485 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4486 |
!!PPFailure methodsFor: ''printing'' stamp: ''JanKurs 8/19/2014 16:30''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4487 |
printOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4488 |
aStream nextPutAll: self message; nextPutAll: '' at ''; print: self position!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4489 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4490 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4491 |
!!PPFailure methodsFor: ''initialization'' stamp: ''JanKurs 8/19/2014 16:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4492 |
initializeMessage: aString context: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4493 |
self initializeMessage: aString context: aPPContext position: aPPContext position!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4494 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4495 |
!!PPFailure methodsFor: ''initialization'' stamp: ''JanKurs 8/19/2014 16:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4496 |
initializeMessage: aString at: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4497 |
self halt: ''deprecated''.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4498 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4499 |
!!PPFailure methodsFor: ''initialization'' stamp: ''JanKurs 8/19/2014 16:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4500 |
initializeMessage: aString context: aPPContext position: position |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4501 |
message := aString. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4502 |
context := aPPContext. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4503 |
position := position.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4504 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4505 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4506 |
!!PPFailure methodsFor: ''accessing'' stamp: ''lr 5/5/2010 13:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4507 |
message |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4508 |
"Answer a human readable error message of this parse failure." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4509 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4510 |
^ message!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4511 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4512 |
!!PPFailure methodsFor: ''accessing'' stamp: ''lr 5/5/2010 13:55''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4513 |
position |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4514 |
"Answer the position in the source string that caused this parse failure." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4515 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4516 |
^ position!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4517 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4518 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4519 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4520 |
PPFailure class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4521 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4522 |
!!PPFailure class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4523 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4524 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4525 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4526 |
!!PPFailure class methodsFor: ''instance creation'' stamp: ''JanKurs 8/19/2014 16:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4527 |
message: aString at: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4528 |
self halt: ''deprecated, use message:context:''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4529 |
^ self basicNew initializeMessage: aString at: anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4530 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4531 |
!!PPFailure class methodsFor: ''instance creation'' stamp: ''JanKurs 8/19/2014 16:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4532 |
message: aString context: aPPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4533 |
^ self basicNew initializeMessage: aString context: aPPContext!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4534 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4535 |
!!PPFailure class methodsFor: ''instance creation'' stamp: ''JanKurs 8/19/2014 16:57''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4536 |
message: aString context: aPPContext at: position |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4537 |
^ self basicNew initializeMessage: aString context: aPPContext position: position!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4538 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4539 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4540 |
ReadStream subclass: #PPStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4541 |
instanceVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4542 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4543 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4544 |
category: ''PetitParser-Core''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4545 |
!!PPStream commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4546 |
A positional stream implementation used for parsing. It overrides some methods for optimization reasons.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4547 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4548 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4549 |
!!PPStream methodsFor: ''accessing'' stamp: ''lr 4/29/2008 21:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4550 |
peek |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4551 |
"An improved version of peek, that is slightly faster than the built in version." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4552 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4553 |
^ self atEnd ifFalse: [ collection at: position + 1 ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4554 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4555 |
!!PPStream methodsFor: ''accessing'' stamp: ''lr 10/5/2010 16:29''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4556 |
uncheckedPeek |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4557 |
"An unchecked version of peek that throws an error if we try to peek over the end of the stream, even faster than #peek." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4558 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4559 |
^ collection at: position + 1!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4560 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4561 |
!!PPStream methodsFor: ''accessing'' stamp: ''lr 2/13/2012 20:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4562 |
collection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4563 |
"Answer the underlying collection." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4564 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4565 |
^ collection!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4566 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4567 |
!!PPStream methodsFor: ''accessing'' stamp: ''lr 8/25/2010 11:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4568 |
position: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4569 |
"The receiver does not check for invalid arguments passed to this method, as it is solely used with valid indexes for backtracking." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4570 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4571 |
position := anInteger!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4572 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4573 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4574 |
!!PPStream methodsFor: ''printing'' stamp: ''lr 11/4/2010 19:23''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4575 |
printOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4576 |
collection isString |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4577 |
ifFalse: [ ^ super printOn: aStream ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4578 |
aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4579 |
nextPutAll: (collection copyFrom: 1 to: position); |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4580 |
nextPutAll: ''·''; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4581 |
nextPutAll: (collection copyFrom: position + 1 to: readLimit)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4582 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4583 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4584 |
!!PPStream methodsFor: ''converting'' stamp: ''lr 2/7/2010 20:53''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4585 |
asPetitStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4586 |
^ self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4587 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4588 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4589 |
Object subclass: #PPToken |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4590 |
instanceVariableNames: ''collection start stop value'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4591 |
classVariableNames: ''NewLineParser'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4592 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4593 |
category: ''PetitParser-Core''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4594 |
!!PPToken commentStamp: ''lr 2/25/2013 23:34'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4595 |
PPToken represents a parsed part of the input stream. Contrary to a simple String it remembers where it came from, the original collection, its start and stop position and its parse value. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4596 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4597 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4598 |
collection <SequenceableCollection> The collection this token comes from. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4599 |
start <Integer> The start position in the collection. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4600 |
stop <Integer> The stop position in the collection. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4601 |
value <Object> The parse result.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4602 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4603 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4604 |
!!PPToken methodsFor: ''querying'' stamp: ''lr 9/7/2011 20:41''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4605 |
line |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4606 |
"Answer the line number of this token in the underlying collection." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4607 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4608 |
| line | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4609 |
line := 1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4610 |
(NewLineParser , [ :stream | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4611 |
start <= stream position |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4612 |
ifTrue: [ ^ line ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4613 |
line := line + 1 ] asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4614 |
/ #any asParser) star |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4615 |
parse: collection. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4616 |
^ line!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4617 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4618 |
!!PPToken methodsFor: ''querying'' stamp: ''lr 9/7/2011 20:40''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4619 |
column |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4620 |
"Answer the column number of this token in the underlying collection." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4621 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4622 |
| position | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4623 |
position := 0. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4624 |
(NewLineParser , [ :stream | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4625 |
start <= stream position |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4626 |
ifTrue: [ ^ start - position ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4627 |
position := stream position ] asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4628 |
/ #any asParser) star |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4629 |
parse: collection. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4630 |
^ start - position!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4631 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4632 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4633 |
!!PPToken methodsFor: ''initialization'' stamp: ''lr 2/25/2013 23:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4634 |
initializeOn: aSequenceableCollection start: aStartInteger stop: aStopInteger value: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4635 |
collection := aSequenceableCollection. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4636 |
start := aStartInteger. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4637 |
stop := aStopInteger. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4638 |
value := anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4639 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4640 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4641 |
!!PPToken methodsFor: ''accessing'' stamp: ''lr 6/15/2010 23:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4642 |
stop |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4643 |
"Answer the stop position of this token in the underlying collection." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4644 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4645 |
^ stop!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4646 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4647 |
!!PPToken methodsFor: ''accessing'' stamp: ''lr 2/25/2013 23:56''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4648 |
size |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4649 |
"Answer the size of this token in the underlying collection." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4650 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4651 |
^ stop - start + 1!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4652 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4653 |
!!PPToken methodsFor: ''accessing'' stamp: ''lr 6/15/2010 23:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4654 |
collection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4655 |
"Answer the underlying collection of this token." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4656 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4657 |
^ collection!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4658 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4659 |
!!PPToken methodsFor: ''accessing'' stamp: ''lr 6/15/2010 23:33''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4660 |
start |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4661 |
"Answer the start position of this token in the underlying collection." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4662 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4663 |
^ start!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4664 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4665 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4666 |
!!PPToken methodsFor: ''printing'' stamp: ''lr 2/26/2013 00:37''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4667 |
printOn: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4668 |
super printOn: aStream. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4669 |
aStream nextPut: $[; print: self start; nextPut: $,; print: self stop; nextPut: $]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4670 |
aStream nextPut: $(; print: self parsedValue; nextPut: $)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4671 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4672 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4673 |
!!PPToken methodsFor: ''copying'' stamp: ''lr 2/26/2013 00:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4674 |
copyFrom: aStartInteger to: aStopInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4675 |
^ self class on: collection start: start + aStartInteger - 1 stop: stop + aStopInteger - 3 value: value!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4676 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4677 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4678 |
!!PPToken methodsFor: ''accessing-values'' stamp: ''lr 2/26/2013 00:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4679 |
value |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4680 |
self notify: ''Token>>#value is no longer supported. Instead use Token>>#inputValue or the more pragmatic #parsedValue.''. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4681 |
^ self inputValue!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4682 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4683 |
!!PPToken methodsFor: ''accessing-values'' stamp: ''lr 2/26/2013 00:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4684 |
inputValue |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4685 |
"Answer the consumed input of this token." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4686 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4687 |
^ collection copyFrom: start to: stop!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4688 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4689 |
!!PPToken methodsFor: ''accessing-values'' stamp: ''lr 2/26/2013 00:32''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4690 |
parsedValue |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4691 |
"Answer the parsed value of this token." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4692 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4693 |
^ value!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4694 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4695 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4696 |
!!PPToken methodsFor: ''comparing'' stamp: ''lr 2/26/2013 00:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4697 |
= anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4698 |
^ self class = anObject class and: [ self parsedValue = anObject parsedValue ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4699 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4700 |
!!PPToken methodsFor: ''comparing'' stamp: ''lr 2/26/2013 00:34''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4701 |
hash |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4702 |
^ self parsedValue hash!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4703 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4704 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4705 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4706 |
PPToken class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4707 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4708 |
!!PPToken class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4709 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4710 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4711 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4712 |
!!PPToken class methodsFor: ''initialization'' stamp: ''lr 11/29/2011 20:42''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4713 |
initialize |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4714 |
"Platform independent newline sequence. LF: Unix, CR+LF: Windows, and CR: Apple." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4715 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4716 |
NewLineParser := (Character lf asParser) / (Character cr asParser , Character lf asParser optional)!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4717 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4718 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4719 |
!!PPToken class methodsFor: ''instance creation'' stamp: ''lr 2/25/2013 23:39''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4720 |
on: aSequenceableCollection start: aStartInteger stop: aStopInteger value: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4721 |
^ self basicNew |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4722 |
initializeOn: aSequenceableCollection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4723 |
start: aStartInteger stop: aStopInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4724 |
value: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4725 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4726 |
!!PPToken class methodsFor: ''instance creation'' stamp: ''lr 2/25/2013 23:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4727 |
on: aSequenceableCollection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4728 |
^ self on: aSequenceableCollection start: 1 stop: aSequenceableCollection size value: nil!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4729 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4730 |
!!PPToken class methodsFor: ''instance creation'' stamp: ''lr 4/6/2010 20:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4731 |
new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4732 |
self error: ''Token can only be created using a dedicated constructor.''!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4733 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4734 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4735 |
Object subclass: #PPContextMemento |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4736 |
instanceVariableNames: ''stream position properties'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4737 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4738 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4739 |
category: ''PetitParser-Core''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4740 |
!!PPContextMemento commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4741 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4742 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4743 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4744 |
!!PPContextMemento methodsFor: ''comparing'' stamp: ''JanKurs 3/19/2014 13:03''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4745 |
= anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4746 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4747 |
(self == anObject) ifTrue: [ ^ true ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4748 |
(anObject class = PPContextMemento) ifFalse: [ ^ false ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4749 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4750 |
(anObject stream == stream) ifFalse: [ ^ false ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4751 |
(anObject position = position) ifFalse: [ ^ false ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4752 |
(anObject properties = properties) ifFalse: [ ^ false ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4753 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4754 |
^ true. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4755 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4756 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4757 |
!!PPContextMemento methodsFor: ''comparing'' stamp: ''JanKurs 3/19/2014 13:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4758 |
hash |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4759 |
^ (position hash bitXor: stream hash) bitXor: properties hash.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4760 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4761 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4762 |
!!PPContextMemento methodsFor: ''accessing - properties'' stamp: ''JanKurs 3/19/2014 12:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4763 |
propertyAt: aKey ifAbsentPut: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4764 |
"Answer the property associated with aKey or, if aKey isn''t found store the result of evaluating aBlock as new value." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4765 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4766 |
^ self propertyAt: aKey ifAbsent: [ self propertyAt: aKey put: aBlock value ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4767 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4768 |
!!PPContextMemento methodsFor: ''accessing - properties'' stamp: ''JanKurs 3/19/2014 12:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4769 |
removeProperty: aKey ifAbsent: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4770 |
"Remove the property with aKey. Answer the value or, if aKey isn''t found, answer the result of evaluating aBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4771 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4772 |
| answer | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4773 |
properties isNil ifTrue: [ ^ aBlock value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4774 |
answer := properties removeKey: aKey ifAbsent: aBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4775 |
properties isEmpty ifTrue: [ properties := nil ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4776 |
^ answer!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4777 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4778 |
!!PPContextMemento methodsFor: ''accessing - properties'' stamp: ''JanKurs 3/19/2014 12:14''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4779 |
propertyAt: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4780 |
"Answer the property value associated with aKey." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4781 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4782 |
^ self propertyAt: aKey ifAbsent: [ self error: ''Property not found'' ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4783 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4784 |
!!PPContextMemento methodsFor: ''accessing - properties'' stamp: ''JanKurs 3/19/2014 12:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4785 |
propertyAt: aKey ifAbsent: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4786 |
"Answer the property value associated with aKey or, if aKey isn''t found, answer the result of evaluating aBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4787 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4788 |
^ properties isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4789 |
ifTrue: [ aBlock value ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4790 |
ifFalse: [ properties at: aKey ifAbsent: aBlock ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4791 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4792 |
!!PPContextMemento methodsFor: ''accessing - properties'' stamp: ''JanKurs 3/19/2014 12:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4793 |
propertyAt: aKey put: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4794 |
"Set the property at aKey to be anObject. If aKey is not found, create a new entry for aKey and set is value to anObject. Answer anObject." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4795 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4796 |
^ (properties ifNil: [ properties := Dictionary new: 1 ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4797 |
at: aKey put: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4798 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4799 |
!!PPContextMemento methodsFor: ''accessing - properties'' stamp: ''JanKurs 3/19/2014 12:14''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4800 |
hasProperty: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4801 |
"Test if the property aKey is present." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4802 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4803 |
^ properties notNil and: [ properties includesKey: aKey ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4804 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4805 |
!!PPContextMemento methodsFor: ''accessing - properties'' stamp: ''JanKurs 3/19/2014 12:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4806 |
removeProperty: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4807 |
"Remove the property with aKey. Answer the property or raise an error if aKey isn''t found." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4808 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4809 |
^ self removeProperty: aKey ifAbsent: [ self error: ''Property not found'' ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4810 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4811 |
!!PPContextMemento methodsFor: ''accessing - properties'' stamp: ''JanKurs 3/19/2014 13:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4812 |
properties |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4813 |
^ properties !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4814 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4815 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4816 |
!!PPContextMemento methodsFor: ''as yet unclassified'' stamp: ''JanKurs 10/28/2013 16:52''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4817 |
stream: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4818 |
stream := aStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4819 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4820 |
!!PPContextMemento methodsFor: ''as yet unclassified'' stamp: ''JanKurs 10/28/2013 16:51''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4821 |
position |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4822 |
^ position!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4823 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4824 |
!!PPContextMemento methodsFor: ''as yet unclassified'' stamp: ''JanKurs 10/28/2013 16:52''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4825 |
position: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4826 |
position := anInteger !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4827 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4828 |
!!PPContextMemento methodsFor: ''as yet unclassified'' stamp: ''JanKurs 10/28/2013 16:51''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4829 |
stream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4830 |
^ stream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4831 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4832 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4833 |
Object subclass: #PPContext |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4834 |
instanceVariableNames: ''stream root properties'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4835 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4836 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4837 |
category: ''PetitParser-Core''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4838 |
!!PPContext commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4839 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4840 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4841 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4842 |
!!PPContext methodsFor: ''memoization'' stamp: ''JanKurs 3/19/2014 16:27''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4843 |
remember |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4844 |
| memento | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4845 |
memento := PPContextMemento new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4846 |
stream: stream; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4847 |
position: stream position; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4848 |
yourself. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4849 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4850 |
self rememberProperties: memento. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4851 |
^ memento!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4852 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4853 |
!!PPContext methodsFor: ''memoization'' stamp: ''JanKurs 3/19/2014 16:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4854 |
restore: aPPContextMemento |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4855 |
aPPContextMemento stream == stream ifFalse: [ self error: ''Oops!!!!'' ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4856 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4857 |
stream position: aPPContextMemento position. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4858 |
self restoreProperties: aPPContextMemento.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4859 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4860 |
!!PPContext methodsFor: ''memoization'' stamp: ''JanKurs 3/19/2014 16:29''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4861 |
restoreProperties: aPPContextMemento |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4862 |
aPPContextMemento stream == stream ifFalse: [ self error: ''Oops!!!!'' ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4863 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4864 |
aPPContextMemento class selectorsAndMethodsDo: [ :selector :method | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4865 |
(selector beginsWith: ''restore'') ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4866 |
aPPContextMemento withArgs: (Array with: self) executeMethod: method. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4867 |
] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4868 |
]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4869 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4870 |
!!PPContext methodsFor: ''memoization'' stamp: ''JanKurs 3/19/2014 16:28''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4871 |
rememberProperties: aPPContextMemento |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4872 |
aPPContextMemento class selectorsAndMethodsDo: [ :selector :method | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4873 |
(selector beginsWith: ''remember'') ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4874 |
aPPContextMemento withArgs: (Array with: self) executeMethod: method. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4875 |
] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4876 |
] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4877 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4878 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4879 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4880 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 4/29/2014 16:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4881 |
peekTwice |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4882 |
^ stream peekTwice!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4883 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4884 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 1/15/2014 16:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4885 |
position |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4886 |
^ stream position!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4887 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4888 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 8/19/2014 14:08''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4889 |
uncheckedPeek |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4890 |
^ stream uncheckedPeek!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4891 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4892 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 1/15/2014 16:11''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4893 |
upTo: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4894 |
^ stream upTo: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4895 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4896 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 8/19/2014 14:08''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4897 |
collection |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4898 |
^ stream collection !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4899 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4900 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 1/16/2014 12:13''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4901 |
atEnd |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4902 |
^ stream atEnd!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4903 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4904 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 4/29/2014 16:24''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4905 |
peek |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4906 |
^ stream peek!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4907 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4908 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 4/29/2014 16:29''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4909 |
upToAll: whatever |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4910 |
^ stream upToAll: whatever!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4911 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4912 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 8/19/2014 14:08''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4913 |
skip: anInteger |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4914 |
^ stream skip: anInteger !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4915 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4916 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 4/29/2014 16:31''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4917 |
upToAnyOf: whatever |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4918 |
^ stream upToAnyOf: whatever!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4919 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4920 |
!!PPContext methodsFor: ''stream mimicry'' stamp: ''JanKurs 1/15/2014 16:02''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4921 |
next |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4922 |
^ stream next!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4923 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4924 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4925 |
!!PPContext methodsFor: ''accessing-properties'' stamp: ''JanKurs 1/16/2014 11:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4926 |
propertyAt: aKey ifAbsentPut: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4927 |
"Answer the property associated with aKey or, if aKey isn''t found store the result of evaluating aBlock as new value." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4928 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4929 |
^ self propertyAt: aKey ifAbsent: [ self propertyAt: aKey put: aBlock value ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4930 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4931 |
!!PPContext methodsFor: ''accessing-properties'' stamp: ''JanKurs 1/16/2014 11:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4932 |
removeProperty: aKey ifAbsent: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4933 |
"Remove the property with aKey. Answer the value or, if aKey isn''t found, answer the result of evaluating aBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4934 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4935 |
| answer | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4936 |
properties isNil ifTrue: [ ^ aBlock value ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4937 |
answer := properties removeKey: aKey ifAbsent: aBlock. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4938 |
properties isEmpty ifTrue: [ properties := nil ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4939 |
^ answer!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4940 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4941 |
!!PPContext methodsFor: ''accessing-properties'' stamp: ''JanKurs 1/16/2014 11:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4942 |
propertyAt: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4943 |
"Answer the property value associated with aKey." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4944 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4945 |
^ self propertyAt: aKey ifAbsent: [ self error: ''Property not found'' ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4946 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4947 |
!!PPContext methodsFor: ''accessing-properties'' stamp: ''JanKurs 1/16/2014 11:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4948 |
propertyAt: aKey ifAbsent: aBlock |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4949 |
"Answer the property value associated with aKey or, if aKey isn''t found, answer the result of evaluating aBlock." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4950 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4951 |
^ properties isNil |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4952 |
ifTrue: [ aBlock value ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4953 |
ifFalse: [ properties at: aKey ifAbsent: aBlock ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4954 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4955 |
!!PPContext methodsFor: ''accessing-properties'' stamp: ''JanKurs 1/16/2014 11:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4956 |
propertyAt: aKey put: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4957 |
"Set the property at aKey to be anObject. If aKey is not found, create a new entry for aKey and set is value to anObject. Answer anObject." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4958 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4959 |
^ (properties ifNil: [ properties := Dictionary new: 1 ]) |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4960 |
at: aKey put: anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4961 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4962 |
!!PPContext methodsFor: ''accessing-properties'' stamp: ''JanKurs 1/16/2014 11:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4963 |
hasProperty: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4964 |
"Test if the property aKey is present." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4965 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4966 |
^ properties notNil and: [ properties includesKey: aKey ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4967 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4968 |
!!PPContext methodsFor: ''accessing-properties'' stamp: ''JanKurs 1/16/2014 11:25''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4969 |
removeProperty: aKey |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4970 |
"Remove the property with aKey. Answer the property or raise an error if aKey isn''t found." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4971 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4972 |
^ self removeProperty: aKey ifAbsent: [ self error: ''Property not found'' ]!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4973 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4974 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4975 |
!!PPContext methodsFor: ''initialization'' stamp: ''JanKurs 1/16/2014 11:24''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4976 |
initialize |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4977 |
stream := nil.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4978 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4979 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4980 |
!!PPContext methodsFor: ''as yet unclassified'' stamp: ''JanKurs 3/19/2014 16:26''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4981 |
parsed: aPPParser at: anInteger result: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4982 |
self halt. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4983 |
^ anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4984 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4985 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4986 |
!!PPContext methodsFor: ''acessing'' stamp: ''JanKurs 10/29/2013 10:13''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4987 |
root: aPPParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4988 |
root := aPPParser !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4989 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4990 |
!!PPContext methodsFor: ''acessing'' stamp: ''JanKurs 10/29/2013 10:13''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4991 |
root |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4992 |
^ root !! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4993 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4994 |
!!PPContext methodsFor: ''acessing'' stamp: ''JanKurs 1/15/2014 15:36''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4995 |
stream: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4996 |
stream := aStream.!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4997 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4998 |
!!PPContext methodsFor: ''acessing'' stamp: ''JanKurs 1/16/2014 15:12''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4999 |
stream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5000 |
^ stream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5001 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5002 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5003 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5004 |
PPContext class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5005 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5006 |
!!PPContext class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5007 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5008 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5009 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5010 |
!!PPContext class methodsFor: ''as yet unclassified'' stamp: ''JanKurs 1/16/2014 14:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5011 |
on: aPPParser stream: aStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5012 |
^ self basicNew |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5013 |
initialize; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5014 |
root: aPPParser; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5015 |
stream: aStream asPetitStream; |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5016 |
yourself!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5017 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5018 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5019 |
Object subclass: #PPMemento |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5020 |
instanceVariableNames: ''result count context'' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5021 |
classVariableNames: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5022 |
poolDictionaries: '''' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5023 |
category: ''PetitParser-Core''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5024 |
!!PPMemento commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5025 |
PPMemento is an internal class used by PPMemoizedParser to cache results and detect left-recursive calls. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5026 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5027 |
Instance Variables: |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5028 |
result <Object> The cached result. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5029 |
count <Integer> The number of recursive cycles followed. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5030 |
position <Integer> The position of the cached result in the input stream.!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5031 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5032 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5033 |
!!PPMemento methodsFor: ''accessing'' stamp: ''JanKurs 1/15/2014 16:09''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5034 |
contextMemento: aPPContextMemento |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5035 |
context := aPPContextMemento |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5036 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5037 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5038 |
!!PPMemento methodsFor: ''accessing'' stamp: ''JanKurs 1/15/2014 16:09''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5039 |
contextMemento |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5040 |
^ context!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5041 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5042 |
!!PPMemento methodsFor: ''accessing'' stamp: ''lr 4/24/2008 10:15''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5043 |
result |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5044 |
^ result!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5045 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5046 |
!!PPMemento methodsFor: ''accessing'' stamp: ''lr 4/22/2008 18:23''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5047 |
result: anObject |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5048 |
result := anObject!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5049 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5050 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5051 |
!!PPMemento methodsFor: ''accessing-readonly'' stamp: ''lr 4/22/2008 18:23''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5052 |
count |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5053 |
^ count!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5054 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5055 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5056 |
!!PPMemento methodsFor: ''initialization'' stamp: ''lr 4/22/2008 18:21''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5057 |
initialize |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5058 |
count := 0 |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5059 |
!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5060 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5061 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5062 |
!!PPMemento methodsFor: ''actions'' stamp: ''lr 4/22/2008 18:20''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5063 |
increment |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5064 |
count := count + 1!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5065 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5066 |
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5067 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5068 |
PPMemento class |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5069 |
instanceVariableNames: ''''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5070 |
!!PPMemento class commentStamp: ''<historical>'' prior: 0!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5071 |
!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5072 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5073 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5074 |
!!PPMemento class methodsFor: ''instance creation'' stamp: ''lr 4/22/2008 18:21''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5075 |
new |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5076 |
^ self basicNew initialize!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5077 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5078 |
PPToken initialize!!''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5079 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5080 |
!!SequenceableCollection methodsFor: ''*petitparser-core-converting'' stamp: ''lr 2/7/2010 20:53''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5081 |
asPetitStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5082 |
^ PPStream on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5083 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5084 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5085 |
!!Character methodsFor: ''*petitparser-core-operators'' stamp: ''lr 6/12/2010 09:04''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5086 |
- aCharacter |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5087 |
"Create a range of characters between the receiver and the argument." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5088 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5089 |
^ PPPredicateObjectParser between: self and: aCharacter!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5090 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5091 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5092 |
!!Character methodsFor: ''*petitparser-core-converting'' stamp: ''lr 12/18/2011 15:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5093 |
asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5094 |
"Answer a parser that accepts the receiving character." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5095 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5096 |
^ PPLiteralObjectParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5097 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5098 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5099 |
!!PositionableStream methodsFor: ''*petitparser-core'' stamp: ''sback 9/3/2010 10:00''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5100 |
peekTwice |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5101 |
"Answer what would be returned if the message next were sent to the |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5102 |
receiver. If the receiver is at the end, answer nil." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5103 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5104 |
| array | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5105 |
self atEnd |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5106 |
ifTrue: [^Array with: nil with: nil]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5107 |
array := Array with: (self next) with: (self peek). |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5108 |
position := position - 1. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5109 |
^array!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5110 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5111 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5112 |
!!Stream methodsFor: ''*petitparser-core-converting'' stamp: ''lr 4/8/2010 14:46''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5113 |
asPetitStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5114 |
^ self contents asPetitStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5115 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5116 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5117 |
!!Symbol methodsFor: ''*petitparser-core-converting'' stamp: ''lr 12/18/2011 15:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5118 |
asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5119 |
"Answer a predicate parser named after the receiving symbol. Possible symbols are the method selectors on the class-side of PPPredicateObjectParser." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5120 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5121 |
^ PPPredicateObjectParser perform: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5122 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5123 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5124 |
!!String methodsFor: ''*petitparser-core-converting'' stamp: ''lr 11/29/2011 20:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5125 |
asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5126 |
"Answer a parser that accepts the receiving string." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5127 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5128 |
^ PPLiteralSequenceParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5129 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5130 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5131 |
!!BlockClosure methodsFor: ''*petitparser-core-converting'' stamp: ''lr 11/29/2011 20:48''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5132 |
asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5133 |
"Answer a parser implemented in the receiving one-argument block." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5134 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5135 |
^ PPPluggableParser on: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5136 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5137 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5138 |
!!UndefinedObject methodsFor: ''*petitparser-converting'' stamp: ''lr 11/29/2011 20:49''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5139 |
asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5140 |
"Answer a parser that succeeds and does not consume anything." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5141 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5142 |
^ PPEpsilonParser new!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5143 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5144 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5145 |
!!Text methodsFor: ''*petitparser-core-converting'' stamp: ''lr 2/7/2010 20:53''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5146 |
asPetitStream |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5147 |
^ string asPetitStream!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5148 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5149 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5150 |
!!Collection methodsFor: ''*petitparser-core-converting'' stamp: ''lr 11/29/2011 20:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5151 |
asChoiceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5152 |
^ PPChoiceParser withAll: (self collect: [ :each | each asParser ])!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5153 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5154 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5155 |
!!Collection methodsFor: ''*petitparser-core-converting'' stamp: ''lr 11/29/2011 20:38''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5156 |
asSequenceParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5157 |
^ PPSequenceParser withAll: (self collect: [ :each | each asParser ])!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5158 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5159 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5160 |
!!Object methodsFor: ''*petitparser-core-testing'' stamp: ''lr 8/6/2010 16:44''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5161 |
isPetitParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5162 |
^ false!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5163 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.312417 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5164 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5165 |
!!Object methodsFor: ''*petitparser-core-converting'' stamp: ''lr 12/18/2011 15:58''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5166 |
asParser |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5167 |
"Answer a parser accepting the receiving object." |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5168 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5169 |
^ PPPredicateObjectParser expect: self!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5170 |
''From Pharo3.0 of 18 March 2013 [Latest update: #30854] on 22 August 2014 at 8:49:56.314418 pm''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5171 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5172 |
!!Object methodsFor: ''*petitparser-core-testing'' stamp: ''lr 2/7/2010 20:54''!! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5173 |
isPetitFailure |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5174 |
^ false!! !! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5175 |
' |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5176 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5177 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5178 |
smalltalkObjectMethods |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5179 |
^ Object allMethods collect: [ :m | m sourceCode ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5180 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5181 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5182 |
smalltalkSourcesBig |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5183 |
^ ((Smalltalk allClasses copyFrom: 1 to: 30) collect: [ :c | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5184 |
c allMethods collect: [ :m | m sourceCode ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5185 |
]) gather: [:each | each ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5186 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5187 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5188 |
workingJavaInDirectory: directory |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5189 |
| sources parser | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5190 |
"return only such a files, that can be parsed by PPJavaSyntax" |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5191 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5192 |
javaCache ifNil: [ javaCache := Dictionary new ]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5193 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5194 |
^ javaCache at: directory ifAbsentPut: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5195 |
sources := self javaInDirectory: directory. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5196 |
parser := PPJavaSyntax new. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5197 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5198 |
sources select: [ :source | ([parser parse: source ] on: Error do: [ PPFailure new ]) isPetitFailure not ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5199 |
] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5200 |
! ! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5201 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5202 |
!PPCBenchmarkResources methodsFor:'private utilities'! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5203 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5204 |
files: files withExtension: extension |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5205 |
^ files select: [ :f | f extension = extension ] |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5206 |
! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5207 |
|
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5208 |
readDirectory: directory |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5209 |
| file | |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5210 |
file := directory asFileReference. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5211 |
file exists ifTrue: [ |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5212 |
^ file allFiles |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5213 |
]. |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5214 |
^ #() |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5215 |
! ! |
b2f2f15cef26
Moved benchmarks to a separate package
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5216 |