mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 14:42:11 +02:00
[272375] support for UTF string literals in LR parser
This commit is contained in:
parent
e389841b9f
commit
d99739839b
10 changed files with 90 additions and 69 deletions
|
@ -12,6 +12,7 @@ Export-Package: org.eclipse.cdt.core.dom.lrparser,
|
|||
org.eclipse.cdt.core.dom.lrparser.action,
|
||||
org.eclipse.cdt.core.dom.lrparser.action.c99,
|
||||
org.eclipse.cdt.core.dom.lrparser.action.cpp,
|
||||
org.eclipse.cdt.core.dom.lrparser.action.gnu,
|
||||
org.eclipse.cdt.core.dom.lrparser.c99,
|
||||
org.eclipse.cdt.core.dom.lrparser.cpp,
|
||||
org.eclipse.cdt.core.dom.lrparser.gnu,
|
||||
|
|
|
@ -12,16 +12,7 @@
|
|||
<project name="CDT Extensible LR Parser Framework" basedir=".">
|
||||
<description>Generates LPG parsers from grammar files</description>
|
||||
|
||||
|
||||
<fail unless="lpg_exe">
|
||||
Property $${lpg_exe} not set.
|
||||
This property must be set to the full path to the LPG generator executable.
|
||||
</fail>
|
||||
|
||||
<fail unless="lpg_template">
|
||||
Property $${lpg_template} not set.
|
||||
This property must be set to the full path to the LPG templates folder.
|
||||
</fail>
|
||||
<import file="generate.xml"/>
|
||||
|
||||
<property name="c99_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/c99"/>
|
||||
<property name="gcc_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/gcc"/>
|
||||
|
@ -148,24 +139,6 @@
|
|||
|
||||
|
||||
|
||||
<target name="generate">
|
||||
<property name="grammar_file" value="${grammar_dir}/${grammar_name}.g"/>
|
||||
<echo message="lpg_exe=${lpg_exe}"/>
|
||||
<echo message="lpg_template=${lpg_template}"/>
|
||||
<echo message="grammar_file=${grammar_file}.g"/>
|
||||
<echo message="output_dir=${output_dir}"/>
|
||||
|
||||
<exec executable="${lpg_exe}">
|
||||
<arg value="${grammar_file}"/>
|
||||
<env key="LPG_TEMPLATE" path="${lpg_template}"/>
|
||||
|
||||
</exec>
|
||||
|
||||
<move overwrite="true" toDir="${output_dir}">
|
||||
<fileset dir=".">
|
||||
<include name="${grammar_name}*.*"/>
|
||||
</fileset>
|
||||
</move>
|
||||
</target>
|
||||
|
||||
</project>
|
64
lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml
Normal file
64
lrparser/org.eclipse.cdt.core.lrparser/grammar/generate.xml
Normal file
|
@ -0,0 +1,64 @@
|
|||
<!--
|
||||
Copyright (c) 2009 IBM Corporation and others.
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are made available under the terms of the Eclipse Public License v1.0
|
||||
which accompanies this distribution, and is available at
|
||||
http://www.eclipse.org/legal/epl-v10.html
|
||||
|
||||
Contributors:
|
||||
IBM Corporation - initial API and implementation
|
||||
-->
|
||||
|
||||
<project name="CDT Extensible LR Parser Framework" basedir=".">
|
||||
|
||||
<!--
|
||||
Common tasks that can be used to generate a parser using LPG and the
|
||||
LR parser framework.
|
||||
|
||||
There are two ANT properties that must be defined:
|
||||
1) lpg_exe - This property must be set to the full path to the LPG generator executable (lpg.exe).
|
||||
2) lpg_template - This property must be set to the full path to the folder that contains the LRParserTemplate.g file.
|
||||
|
||||
Additionally if the $Import or $Include directives are being used in a grammar
|
||||
file then the LPG_INCLUDE environment variable must be set to the directory
|
||||
of the files being included.
|
||||
-->
|
||||
|
||||
<fail unless="lpg_exe">
|
||||
Property $${lpg_exe} not set.
|
||||
This property must be set to the full path to the LPG generator executable.
|
||||
</fail>
|
||||
|
||||
<fail unless="lpg_template">
|
||||
Property $${lpg_template} not set.
|
||||
This property must be set to the full path to the LPG templates folder.
|
||||
</fail>
|
||||
|
||||
|
||||
<!--
|
||||
Parameters:
|
||||
${grammar_dir} - directory that contains the grammar files
|
||||
${grammar_name} - the name of the main grammar file to run LPG on (not including the .g extension)
|
||||
${output_dir} - name of directory where generated files should go
|
||||
-->
|
||||
<target name="generate">
|
||||
<property name="grammar_file" value="${grammar_dir}/${grammar_name}.g"/>
|
||||
<echo message="lpg_exe=${lpg_exe}"/>
|
||||
<echo message="lpg_template=${lpg_template}"/>
|
||||
<echo message="grammar_file=${grammar_file}.g"/>
|
||||
<echo message="output_dir=${output_dir}"/>
|
||||
|
||||
<exec executable="${lpg_exe}">
|
||||
<arg value="${grammar_file}"/>
|
||||
<env key="LPG_TEMPLATE" path="${lpg_template}"/>
|
||||
</exec>
|
||||
|
||||
<move overwrite="true" toDir="${output_dir}">
|
||||
<fileset dir=".">
|
||||
<include name="${grammar_name}*.*"/>
|
||||
</fileset>
|
||||
</move>
|
||||
</target>
|
||||
|
||||
|
||||
</project>
|
|
@ -127,8 +127,12 @@ public final class DOMToC99TokenMap implements IDOMTokenMap {
|
|||
case tFLOATINGPT : return TK_floating;
|
||||
case tSTRING : return TK_stringlit;
|
||||
case tLSTRING : return TK_stringlit;
|
||||
case tUTF16STRING : return TK_stringlit;
|
||||
case tUTF32STRING : return TK_stringlit;
|
||||
case tCHAR : return TK_charconst;
|
||||
case tLCHAR : return TK_charconst;
|
||||
case tUTF16CHAR : return TK_charconst;
|
||||
case tUTF32CHAR : return TK_charconst;
|
||||
case t__Bool : return TK__Bool;
|
||||
case t__Complex : return TK__Complex;
|
||||
case t__Imaginary : return TK__Imaginary;
|
||||
|
|
|
@ -162,8 +162,12 @@ public class DOMToISOCPPTokenMap implements IDOMTokenMap {
|
|||
case tFLOATINGPT : return TK_floating;
|
||||
case tSTRING : return TK_stringlit;
|
||||
case tLSTRING : return TK_stringlit;
|
||||
case tUTF16STRING : return TK_stringlit;
|
||||
case tUTF32STRING : return TK_stringlit;
|
||||
case tCHAR : return TK_charconst;
|
||||
case tLCHAR : return TK_charconst;
|
||||
case tUTF16CHAR : return TK_charconst;
|
||||
case tUTF32CHAR : return TK_charconst;
|
||||
case tCOMPLETION : return TK_Completion;
|
||||
case tEOC : return TK_EndOfCompletion;
|
||||
case tEND_OF_INPUT : return TK_EOF_TOKEN;
|
||||
|
|
|
@ -128,8 +128,12 @@ public final class DOMToGCCTokenMap implements IDOMTokenMap {
|
|||
case tFLOATINGPT : return TK_floating;
|
||||
case tSTRING : return TK_stringlit;
|
||||
case tLSTRING : return TK_stringlit;
|
||||
case tUTF16STRING : return TK_stringlit;
|
||||
case tUTF32STRING : return TK_stringlit;
|
||||
case tCHAR : return TK_charconst;
|
||||
case tLCHAR : return TK_charconst;
|
||||
case tUTF16CHAR : return TK_charconst;
|
||||
case tUTF32CHAR : return TK_charconst;
|
||||
case t__Bool : return TK__Bool;
|
||||
case t__Complex : return TK__Complex;
|
||||
case t__Imaginary : return TK__Imaginary;
|
||||
|
|
|
@ -163,6 +163,10 @@ public class DOMToGPPTokenMap implements IDOMTokenMap {
|
|||
case tFLOATINGPT : return TK_floating;
|
||||
case tSTRING : return TK_stringlit;
|
||||
case tLSTRING : return TK_stringlit;
|
||||
case tUTF16STRING : return TK_stringlit;
|
||||
case tUTF32STRING : return TK_stringlit;
|
||||
case tUTF16CHAR : return TK_charconst;
|
||||
case tUTF32CHAR : return TK_charconst;
|
||||
case tCHAR : return TK_charconst;
|
||||
case tLCHAR : return TK_charconst;
|
||||
case tCOMPLETION : return TK_Completion;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!--
|
||||
Copyright (c) 2006, 2008 IBM Corporation and others.
|
||||
Copyright (c) 2006, 2009 IBM Corporation and others.
|
||||
All rights reserved. This program and the accompanying materials
|
||||
are made available under the terms of the Eclipse Public License v1.0
|
||||
which accompanies this distribution, and is available at
|
||||
|
@ -12,15 +12,7 @@
|
|||
<project name="UPC Parser" default="upc" basedir=".">
|
||||
<description>Generates the UPC parser from LPG grammar files</description>
|
||||
|
||||
<fail unless="lpg_exe">
|
||||
Property $${lpg_exe} not set.
|
||||
This property must be set to the full path to the LPG generator executable.
|
||||
</fail>
|
||||
|
||||
<fail unless="lpg_template">
|
||||
Property $${lpg_template} not set.
|
||||
This property must be set to the full path to the LPG templates folder.
|
||||
</fail>
|
||||
<import file="../../org.eclipse.cdt.core.lrparser/grammar/generate.xml"/>
|
||||
|
||||
<property name="upc_location" value="../src/org/eclipse/cdt/internal/core/dom/parser/upc"/>
|
||||
|
||||
|
@ -53,24 +45,4 @@
|
|||
</antcall>
|
||||
</target>
|
||||
|
||||
|
||||
<target name="generate">
|
||||
<property name="grammar_file" value="${grammar_dir}/${grammar_name}.g"/>
|
||||
<echo message="lpg_exe=${lpg_exe}"/>
|
||||
<echo message="lpg_template=${lpg_template}"/>
|
||||
<echo message="grammar_file=${grammar_file}.g"/>
|
||||
<echo message="output_dir=${output_dir}"/>
|
||||
|
||||
<exec executable="${lpg_exe}">
|
||||
<arg value="${grammar_file}"/>
|
||||
<env key="LPG_TEMPLATE" path="${lpg_template}"/>
|
||||
</exec>
|
||||
|
||||
<move overwrite="true" toDir="${output_dir}">
|
||||
<fileset dir=".">
|
||||
<include name="${grammar_name}*.*"/>
|
||||
</fileset>
|
||||
</move>
|
||||
</target>
|
||||
|
||||
</project>
|
|
@ -130,8 +130,12 @@ public class DOMToUPCTokenMap implements IDOMTokenMap {
|
|||
case tFLOATINGPT : return TK_floating;
|
||||
case tSTRING : return TK_stringlit;
|
||||
case tLSTRING : return TK_stringlit;
|
||||
case tUTF16STRING : return TK_stringlit;
|
||||
case tUTF32STRING : return TK_stringlit;
|
||||
case tCHAR : return TK_charconst;
|
||||
case tLCHAR : return TK_charconst;
|
||||
case tUTF16CHAR : return TK_charconst;
|
||||
case tUTF32CHAR : return TK_charconst;
|
||||
case t__Bool : return TK__Bool;
|
||||
case t__Complex : return TK__Complex;
|
||||
case t__Imaginary : return TK__Imaginary;
|
||||
|
|
|
@ -25,8 +25,6 @@ import org.eclipse.cdt.core.dom.parser.upc.DOMToUPCTokenMap;
|
|||
import org.eclipse.cdt.core.dom.parser.upc.UPCLanguageKeywords;
|
||||
import org.eclipse.cdt.core.index.IIndex;
|
||||
import org.eclipse.cdt.core.model.ICLanguageKeywords;
|
||||
import org.eclipse.cdt.core.model.IContributedModelBuilder;
|
||||
import org.eclipse.cdt.core.model.ITranslationUnit;
|
||||
import org.eclipse.cdt.core.parser.IScanner;
|
||||
import org.eclipse.cdt.core.parser.ParserLanguage;
|
||||
import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParser;
|
||||
|
@ -52,13 +50,6 @@ public class UPCLanguage extends BaseExtensibleLanguage {
|
|||
return new UPCParser(scanner, new DOMToUPCTokenMap(), getBuiltinBindingsProvider(), index, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param tu Not used, default model builder used.
|
||||
*/
|
||||
public IContributedModelBuilder createModelBuilder(ITranslationUnit tu) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return ID;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue