• R/O
  • SSH
  • HTTPS

jobjectpascal: Commit


Commit MetaInfo

Revision131 (tree)
Time2015-06-13 17:53:10
Authoriga

Log Message

save

Change Summary

Incremental Difference

--- trunk/src/jp/igapyon/jobjectpascal/parser/PascalSyntaxToken.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/PascalSyntaxToken.java (nonexistent)
@@ -1,66 +0,0 @@
1-/**************************************************************************
2- * Copyright 2014 Toshiki Iga
3- *
4- * Licensed under the Apache License, Version 2.0 (the "License");
5- * you may not use this file except in compliance with the License.
6- * You may obtain a copy of the License at
7- * http://www.apache.org/licenses/LICENSE-2.0
8- *
9- * Unless required by applicable law or agreed to in writing, software
10- * distributed under the License is distributed on an "AS IS" BASIS,
11- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12- * See the License for the specific language governing permissions and
13- * limitations under the License.
14- *********************************************************************** */
15-/**************************************************************************
16- * Copyright (c) 2014, Toshiki Iga, All rights reserved.
17- *
18- * This library is free software; you can redistribute it and/or
19- * modify it under the terms of the GNU Lesser General Public
20- * License as published by the Free Software Foundation; either
21- * version 3.0 of the License, or (at your option) any later version.
22- *
23- * This library is distributed in the hope that it will be useful,
24- * but WITHOUT ANY WARRANTY; without even the implied warranty of
25- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26- * Lesser General Public License for more details.
27- *
28- * You should have received a copy of the GNU Lesser General Public
29- * License along with this library.
30- * If not, see <http://www.gnu.org/licenses/>.
31- *********************************************************************** */
32-package jp.igapyon.jobjectpascal.parser;
33-
34-import java.util.ArrayList;
35-import java.util.List;
36-
37-public abstract class PascalSyntaxToken {
38- protected String name;
39- protected String value;
40-
41- final protected List<PascalLexicalToken> lexcialTokenList = new ArrayList<PascalLexicalToken>();
42-
43- public void setName(final String val) {
44- name = val;
45- }
46-
47- public String getName() {
48- return name;
49- }
50-
51- public void setValue(final String val) {
52- value = val;
53- }
54-
55- public String getValue() {
56- return value;
57- }
58-
59- public List<PascalLexicalToken> getLexicalTokenList() {
60- return lexcialTokenList;
61- }
62-
63- public String getString() {
64- return getName() + ": " + getValue();
65- }
66-}
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property
--- trunk/src/jp/igapyon/jobjectpascal/parser/PascalSyntaxProcessInfo.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/PascalSyntaxProcessInfo.java (revision 131)
@@ -2,6 +2,8 @@
22
33 import java.util.List;
44
5+import jp.igapyon.jobjectpascal.parser.ast.PascalAstNode;
6+
57 public class PascalSyntaxProcessInfo {
68 public int lexicalIndex;
79 public List<PascalLexicalToken> lexicalTokenList;
@@ -16,11 +18,11 @@
1618 /**
1719 * Output
1820 */
19- public List<PascalSyntaxToken> syntaxTokenList;
21+ public List<PascalAstNode> syntaxTokenList;
2022
2123 public PascalSyntaxProcessInfo(int lexicalIndex,
2224 boolean isBreakOnImplementation,
23- List<PascalSyntaxToken> syntaxTokenList) {
25+ List<PascalAstNode> syntaxTokenList) {
2426 this.lexicalIndex = lexicalIndex;
2527 this.isBreakOnImplementation = isBreakOnImplementation;
2628 this.syntaxTokenList = syntaxTokenList;
--- trunk/src/jp/igapyon/jobjectpascal/parser/syntax/PascalSyntaxTokenVarParser.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/syntax/PascalSyntaxTokenVarParser.java (revision 131)
@@ -4,7 +4,7 @@
44 import jp.igapyon.jobjectpascal.parser.PascalLexicalToken;
55 import jp.igapyon.jobjectpascal.parser.PascalSyntaxProcessInfo;
66 import jp.igapyon.jobjectpascal.parser.PascalSyntaxTokenUtil;
7-import jp.igapyon.jobjectpascal.parser.ast.PascalAstNode;
7+import jp.igapyon.jobjectpascal.parser.ast.PascalAstNodeImpl;
88
99 public class PascalSyntaxTokenVarParser {
1010 public void parseMuiti(PascalSyntaxProcessInfo processInfo) {
@@ -34,7 +34,7 @@
3434 }
3535
3636 public void parse(PascalSyntaxProcessInfo processInfo) {
37- final PascalAstNode statement = new PascalAstNode();
37+ final PascalAstNodeImpl statement = new PascalAstNodeImpl();
3838 statement.setName("var");
3939
4040 statement.setValue(PascalSyntaxTokenUtil.readToDelimWithoutWhitespaces(
--- trunk/src/jp/igapyon/jobjectpascal/parser/syntax/PascalSyntaxTokenUsesParser.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/syntax/PascalSyntaxTokenUsesParser.java (revision 131)
@@ -2,11 +2,11 @@
22
33 import jp.igapyon.jobjectpascal.parser.PascalSyntaxProcessInfo;
44 import jp.igapyon.jobjectpascal.parser.PascalSyntaxTokenUtil;
5-import jp.igapyon.jobjectpascal.parser.ast.PascalAstNode;
5+import jp.igapyon.jobjectpascal.parser.ast.PascalAstNodeImpl;
66
77 public class PascalSyntaxTokenUsesParser {
88 public void parse(PascalSyntaxProcessInfo processInfo) {
9- final PascalAstNode statement = new PascalAstNode();
9+ final PascalAstNodeImpl statement = new PascalAstNodeImpl();
1010 statement.setName("uses");
1111
1212 statement.setValue(PascalSyntaxTokenUtil.readToDelimWithoutWhitespaces(
--- trunk/src/jp/igapyon/jobjectpascal/parser/syntax/PascalSyntaxTokenConstParser.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/syntax/PascalSyntaxTokenConstParser.java (revision 131)
@@ -4,7 +4,8 @@
44 import jp.igapyon.jobjectpascal.parser.PascalLexicalToken;
55 import jp.igapyon.jobjectpascal.parser.PascalSyntaxProcessInfo;
66 import jp.igapyon.jobjectpascal.parser.PascalSyntaxTokenUtil;
7-import jp.igapyon.jobjectpascal.parser.ast.PascalAstNode;
7+import jp.igapyon.jobjectpascal.parser.ast.PascalAstConst;
8+import jp.igapyon.jobjectpascal.parser.ast.PascalAstNodeImpl;
89
910 public class PascalSyntaxTokenConstParser {
1011 public void parseMuiti(PascalSyntaxProcessInfo processInfo) {
@@ -34,10 +35,13 @@
3435 }
3536
3637 public void parse(PascalSyntaxProcessInfo processInfo) {
37- final PascalAstNode statement = new PascalAstNode();
38+ final PascalAstConst statement = new PascalAstConst();
3839 statement.setName("const");
3940
40- statement.setValue(PascalSyntaxTokenUtil.readToDelimWithoutWhitespaces(
41+ statement.setConstName(PascalSyntaxTokenUtil.readToDelimWithoutWhitespaces(
42+ processInfo, "="));
43+ processInfo.lexicalIndex++;
44+ statement.setConstValue(PascalSyntaxTokenUtil.readToDelimWithoutWhitespaces(
4145 processInfo, ";"));
4246
4347 processInfo.syntaxTokenList.add(statement);
--- trunk/src/jp/igapyon/jobjectpascal/parser/syntax/PascalSyntaxTokenProgramParser.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/syntax/PascalSyntaxTokenProgramParser.java (revision 131)
@@ -2,11 +2,11 @@
22
33 import jp.igapyon.jobjectpascal.parser.PascalSyntaxProcessInfo;
44 import jp.igapyon.jobjectpascal.parser.PascalSyntaxTokenUtil;
5-import jp.igapyon.jobjectpascal.parser.ast.PascalAstNode;
5+import jp.igapyon.jobjectpascal.parser.ast.PascalAstNodeImpl;
66
77 public class PascalSyntaxTokenProgramParser {
88 public void parse(PascalSyntaxProcessInfo processInfo) {
9- final PascalAstNode statement = new PascalAstNode();
9+ final PascalAstNodeImpl statement = new PascalAstNodeImpl();
1010 statement.setName("program");
1111
1212 statement.setValue(PascalSyntaxTokenUtil.readToDelimWithoutWhitespaces(
--- trunk/src/jp/igapyon/jobjectpascal/parser/ast/PascalAstNode.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/ast/PascalAstNode.java (revision 131)
@@ -1,5 +1,5 @@
11 /**************************************************************************
2- * Copyright 2014-2015 Toshiki Iga
2+ * Copyright 2014 Toshiki Iga
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
1313 * limitations under the License.
1414 *********************************************************************** */
1515 /**************************************************************************
16- * Copyright (c) 2014-2015, Toshiki Iga, All rights reserved.
16+ * Copyright (c) 2014, Toshiki Iga, All rights reserved.
1717 *
1818 * This library is free software; you can redistribute it and/or
1919 * modify it under the terms of the GNU Lesser General Public
@@ -34,12 +34,35 @@
3434 import java.util.ArrayList;
3535 import java.util.List;
3636
37-import jp.igapyon.jobjectpascal.parser.PascalSyntaxToken;
37+import jp.igapyon.jobjectpascal.parser.PascalLexicalToken;
3838
39-public class PascalAstNode extends PascalSyntaxToken {
40- protected List<PascalSyntaxToken> syntaxTokenList = new ArrayList<PascalSyntaxToken>();
39+public abstract class PascalAstNode {
40+ protected String name;
41+ protected String value;
4142
42- public List<PascalSyntaxToken> getSyntaxTokenList(){
43- return syntaxTokenList;
43+ final protected List<PascalLexicalToken> lexcialTokenList = new ArrayList<PascalLexicalToken>();
44+
45+ public void setName(final String val) {
46+ name = val;
4447 }
48+
49+ public String getName() {
50+ return name;
51+ }
52+
53+ public void setValue(final String val) {
54+ value = val;
55+ }
56+
57+ public String getValue() {
58+ return value;
59+ }
60+
61+ public List<PascalLexicalToken> getLexicalTokenList() {
62+ return lexcialTokenList;
63+ }
64+
65+ public String getString() {
66+ return getName() + ": " + getValue();
67+ }
4568 }
--- trunk/src/jp/igapyon/jobjectpascal/parser/ast/PascalAstConst.java (nonexistent)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/ast/PascalAstConst.java (revision 131)
@@ -0,0 +1,26 @@
1+package jp.igapyon.jobjectpascal.parser.ast;
2+
3+public class PascalAstConst extends PascalAstNodeImpl {
4+ protected String constName;
5+ protected String constValue;
6+
7+ public String getConstName() {
8+ return constName;
9+ }
10+
11+ public void setConstName(String constName) {
12+ this.constName = constName;
13+ }
14+
15+ public String getConstValue() {
16+ return constValue;
17+ }
18+
19+ public void setConstValue(String constValue) {
20+ this.constValue = constValue;
21+ }
22+
23+ public String getString() {
24+ return getName() + ": " + getConstName() + ": " + getConstValue();
25+ }
26+}
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- trunk/src/jp/igapyon/jobjectpascal/parser/ast/PascalAstNodeImpl.java (nonexistent)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/ast/PascalAstNodeImpl.java (revision 131)
@@ -0,0 +1,43 @@
1+/**************************************************************************
2+ * Copyright 2014-2015 Toshiki Iga
3+ *
4+ * Licensed under the Apache License, Version 2.0 (the "License");
5+ * you may not use this file except in compliance with the License.
6+ * You may obtain a copy of the License at
7+ * http://www.apache.org/licenses/LICENSE-2.0
8+ *
9+ * Unless required by applicable law or agreed to in writing, software
10+ * distributed under the License is distributed on an "AS IS" BASIS,
11+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+ * See the License for the specific language governing permissions and
13+ * limitations under the License.
14+ *********************************************************************** */
15+/**************************************************************************
16+ * Copyright (c) 2014-2015, Toshiki Iga, All rights reserved.
17+ *
18+ * This library is free software; you can redistribute it and/or
19+ * modify it under the terms of the GNU Lesser General Public
20+ * License as published by the Free Software Foundation; either
21+ * version 3.0 of the License, or (at your option) any later version.
22+ *
23+ * This library is distributed in the hope that it will be useful,
24+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
25+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26+ * Lesser General Public License for more details.
27+ *
28+ * You should have received a copy of the GNU Lesser General Public
29+ * License along with this library.
30+ * If not, see <http://www.gnu.org/licenses/>.
31+ *********************************************************************** */
32+package jp.igapyon.jobjectpascal.parser.ast;
33+
34+import java.util.ArrayList;
35+import java.util.List;
36+
37+public class PascalAstNodeImpl extends PascalAstNode {
38+ protected List<PascalAstNode> syntaxTokenList = new ArrayList<PascalAstNode>();
39+
40+ public List<PascalAstNode> getSyntaxTokenList(){
41+ return syntaxTokenList;
42+ }
43+}
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
--- trunk/src/jp/igapyon/jobjectpascal/parser/ast/PascalAstType.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/ast/PascalAstType.java (revision 131)
@@ -1,7 +1,7 @@
11 package jp.igapyon.jobjectpascal.parser.ast;
22
33
4-public class PascalAstType extends PascalAstNode {
4+public class PascalAstType extends PascalAstNodeImpl {
55 protected String typeName;
66 protected String parentTypeName;
77 protected boolean forwardDeclaration = false;
--- trunk/src/jp/igapyon/jobjectpascal/parser/PascalSyntaxTokenParser.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/PascalSyntaxTokenParser.java (revision 131)
@@ -42,6 +42,7 @@
4242 import jp.igapyon.jobjectpascal.PascalConstants;
4343 import jp.igapyon.jobjectpascal.PascalConstants.TokenType;
4444 import jp.igapyon.jobjectpascal.parser.ast.PascalAstNode;
45+import jp.igapyon.jobjectpascal.parser.ast.PascalAstNodeImpl;
4546 import jp.igapyon.jobjectpascal.parser.ast.PascalAstType;
4647 import jp.igapyon.jobjectpascal.parser.syntax.PascalSyntaxTokenConstParser;
4748 import jp.igapyon.jobjectpascal.parser.syntax.PascalSyntaxTokenProgramParser;
@@ -52,7 +53,7 @@
5253 protected static final boolean IS_DEBUG = false;
5354
5455 protected PascalSyntaxProcessInfo processInfo = new PascalSyntaxProcessInfo(0, true,
55- new ArrayList<PascalSyntaxToken>());
56+ new ArrayList<PascalAstNode>());
5657
5758 protected void setBreakOnImplementation(final boolean breakOnImplementation) {
5859 processInfo.isBreakOnImplementation = breakOnImplementation;
@@ -71,21 +72,21 @@
7172 public static void main(String[] args) throws IOException {
7273 final PascalSyntaxTokenParser parser = new PascalSyntaxTokenParser();
7374 parser.setBreakOnImplementation(true);
74- final List<PascalSyntaxToken> syntaxTokenList = parser.parse(new File(
75+ final List<PascalAstNode> syntaxTokenList = parser.parse(new File(
7576 "./test/data/op/TestSrc005.pas"));
7677 System.out.println("Result:");
77- for (PascalSyntaxToken syntax : syntaxTokenList) {
78+ for (PascalAstNode syntax : syntaxTokenList) {
7879 System.out.println(syntax.getString());
7980 }
8081 }
8182
82- public List<PascalSyntaxToken> parse(final File file) throws IOException {
83+ public List<PascalAstNode> parse(final File file) throws IOException {
8384 // TODO encoding is UTF8? really?
8485 return parse(new BufferedReader(new InputStreamReader(
8586 new FileInputStream(file), "UTF8")));
8687 }
8788
88- public List<PascalSyntaxToken> parse(final BufferedReader reader)
89+ public List<PascalAstNode> parse(final BufferedReader reader)
8990 throws IOException {
9091 processInfo.lexicalTokenList = new PascalLexicalTokenParser().parse(reader);
9192 processInfo.lexicalIndex = 0;
@@ -98,7 +99,7 @@
9899 *
99100 * @throws IOException
100101 */
101- protected void parseTopLoop(final PascalAstNode parentStatement)
102+ protected void parseTopLoop(final PascalAstNodeImpl parentStatement)
102103 throws IOException {
103104 boolean isInInterface=false;
104105 boolean isInImplementation=false;
@@ -114,7 +115,7 @@
114115 processInfo.lexicalIndex++;
115116 new PascalSyntaxTokenProgramParser().parse(processInfo);
116117 } else if ("unit".equals(wordSymbol)) {
117- final PascalAstNode statement = parseUnit();
118+ final PascalAstNodeImpl statement = parseUnit();
118119 processInfo.syntaxTokenList.add(statement);
119120 } else if ("uses".equals(wordSymbol)) {
120121 processInfo.lexicalIndex++;
@@ -146,7 +147,7 @@
146147 //parseProcedureDecl();
147148 } else if ("begin".equals(token.getWord().toLowerCase())) {
148149 // for command line style.
149- final PascalAstNode statement = parseBegin();
150+ final PascalAstNodeImpl statement = parseBegin();
150151 processInfo.syntaxTokenList.add(statement);
151152 // } else if ("end".equals(token.getWord().toLowerCase())) {
152153 // FIXME will be needed again.
@@ -178,7 +179,7 @@
178179 * @param parentStatement
179180 * @throws IOException
180181 */
181- protected void parseTopLoopDummy(final PascalAstNode parentStatement)
182+ protected void parseTopLoopDummy(final PascalAstNodeImpl parentStatement)
182183 throws IOException {
183184 for (; processInfo.lexicalIndex < processInfo.lexicalTokenList.size(); processInfo.lexicalIndex++) {
184185 final PascalLexicalToken token = processInfo.lexicalTokenList.get(processInfo.lexicalIndex);
@@ -189,18 +190,18 @@
189190 if (token.getType() == PascalConstants.TokenType.WORD_SYMBOL) {
190191 final String wordSymbol = token.getWord().toLowerCase();
191192 if ("unit".equals(wordSymbol)) {
192- final PascalAstNode statement = parseUnit();
193+ final PascalAstNodeImpl statement = parseUnit();
193194 processInfo.syntaxTokenList.add(statement);
194195 } else if ("uses".equals(wordSymbol)) {
195- final PascalAstNode statement = parseUses();
196+ final PascalAstNodeImpl statement = parseUses();
196197 processInfo.syntaxTokenList.add(statement);
197198 } else if ("type".equals(wordSymbol)) {
198199 parseTypeDummy();
199200 } else if ("begin".equals(token.getWord().toLowerCase())) {
200- final PascalAstNode statement = parseBegin();
201+ final PascalAstNodeImpl statement = parseBegin();
201202 processInfo.syntaxTokenList.add(statement);
202203 } else if ("try".equals(token.getWord().toLowerCase())) {
203- final PascalAstNode statement = parseTry();
204+ final PascalAstNodeImpl statement = parseTry();
204205 processInfo.syntaxTokenList.add(statement);
205206 } else if ("raise".equals(token.getWord().toLowerCase())) {
206207 // TODO impl.
@@ -228,7 +229,7 @@
228229 }
229230 }
230231
231- public void parseToSemicolon(final PascalAstNode statement) {
232+ public void parseToSemicolon(final PascalAstNodeImpl statement) {
232233 String value = "";
233234 for (; processInfo.lexicalIndex < processInfo.lexicalTokenList.size(); processInfo.lexicalIndex++) {
234235 final PascalLexicalToken token = processInfo.lexicalTokenList.get(processInfo.lexicalIndex);
@@ -248,8 +249,8 @@
248249 statement.setValue(value);
249250 }
250251
251- protected PascalAstNode parseUnit() {
252- final PascalAstNode statement = new PascalAstNode();
252+ protected PascalAstNodeImpl parseUnit() {
253+ final PascalAstNodeImpl statement = new PascalAstNodeImpl();
253254 statement.setName(processInfo.lexicalTokenList.get(processInfo.lexicalIndex++).getWord()
254255 .toLowerCase());
255256
@@ -258,8 +259,8 @@
258259 return statement;
259260 }
260261
261- protected PascalAstNode parseUses() {
262- final PascalAstNode statement = new PascalAstNode();
262+ protected PascalAstNodeImpl parseUses() {
263+ final PascalAstNodeImpl statement = new PascalAstNodeImpl();
263264 statement.setName(processInfo.lexicalTokenList.get(processInfo.lexicalIndex++).getWord()
264265 .toLowerCase());
265266
@@ -558,8 +559,8 @@
558559 }
559560 }
560561
561- protected PascalAstNode parseBegin() throws IOException {
562- final PascalAstNode statement = new PascalAstNode();
562+ protected PascalAstNodeImpl parseBegin() throws IOException {
563+ final PascalAstNodeImpl statement = new PascalAstNodeImpl();
563564 statement.setName(processInfo.lexicalTokenList.get(processInfo.lexicalIndex++).getWord()
564565 .toLowerCase());
565566
@@ -568,8 +569,8 @@
568569 return statement;
569570 }
570571
571- protected PascalAstNode parseTry() throws IOException {
572- final PascalAstNode statement = new PascalAstNode();
572+ protected PascalAstNodeImpl parseTry() throws IOException {
573+ final PascalAstNodeImpl statement = new PascalAstNodeImpl();
573574 statement.setName(processInfo.lexicalTokenList.get(processInfo.lexicalIndex++).getWord()
574575 .toLowerCase());
575576
--- trunk/src/jp/igapyon/jobjectpascal/parser/PascalSyntaxTokenUtil.java (revision 130)
+++ trunk/src/jp/igapyon/jobjectpascal/parser/PascalSyntaxTokenUtil.java (revision 131)
@@ -37,6 +37,7 @@
3737 import java.util.List;
3838
3939 import jp.igapyon.jobjectpascal.PascalConstants;
40+import jp.igapyon.jobjectpascal.parser.ast.PascalAstNode;
4041 import jp.igapyon.jobjectpascal.parser.ast.PascalAstType;
4142
4243 public class PascalSyntaxTokenUtil {
@@ -86,9 +87,9 @@
8687 try {
8788 final PascalSyntaxTokenParser parser = new PascalSyntaxTokenParser();
8889 parser.setBreakOnImplementation(true);
89- final List<PascalSyntaxToken> syntaxTokenList = parser.parse(file);
90+ final List<PascalAstNode> syntaxTokenList = parser.parse(file);
9091
91- for (PascalSyntaxToken syntax : syntaxTokenList) {
92+ for (PascalAstNode syntax : syntaxTokenList) {
9293 if (syntax.getName().toLowerCase().equals("unit")) {
9394 return syntax.getValue();
9495 }
@@ -104,9 +105,9 @@
104105 try {
105106 final PascalSyntaxTokenParser parser = new PascalSyntaxTokenParser();
106107 parser.setBreakOnImplementation(true);
107- final List<PascalSyntaxToken> syntaxTokenList = parser.parse(file);
108+ final List<PascalAstNode> syntaxTokenList = parser.parse(file);
108109
109- for (PascalSyntaxToken syntax : syntaxTokenList) {
110+ for (PascalAstNode syntax : syntaxTokenList) {
110111 if (syntax.getName().toLowerCase().equals("type")) {
111112 PascalAstType statementType = (PascalAstType) syntax;
112113 if (statementType.isForwardDeclaration()) {
Show on old repository browser