Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Reordered files, merged to singly directory for git migration.

  • Loading branch information...
commit 2b374103d98d174a9971ebe1bf25b706fcfc87d3 1 parent 2130802
Simos Xenitellis authored
Showing with 0 additions and 5,807 deletions.
  1. 0  {KeyboardLayoutEditor → }/.project
  2. 0  {KeyboardLayoutEditor → }/.pydevproject
  3. 0  {KeyboardLayoutEditor → }/.settings/org.eclipse.ltk.core.refactoring.prefs
  4. 0  {KeyboardLayoutEditor → }/.settings/org.eclipse.mylyn.tasks.ui.prefs
  5. 0  {KeyboardLayoutEditor/src → }/COPYING
  6. 0  {KeyboardLayoutEditor/src → }/Common.py
  7. +0 −58 Compose/Compose.g
  8. +0 −16 Compose/ComposeWalker.g
  9. +0 −71 Compose/print_tree.py
  10. 0  {KeyboardLayoutEditor/src → }/DeadKeysDict.py
  11. 0  {KeyboardLayoutEditor/src → }/Disconnect.
  12. 0  {KeyboardLayoutEditor/src → }/DumbKey.py
  13. 0  {KeyboardLayoutEditor/src → }/Enum.py
  14. 0  {KeyboardLayoutEditor/src → }/GenericLayout.py
  15. 0  {KeyboardLayoutEditor/src → }/Key.py
  16. 0  {KeyboardLayoutEditor/src → }/KeyDict.py
  17. 0  {KeyboardLayoutEditor/src → }/KeyValue.py
  18. 0  {KeyboardLayoutEditor/src → }/Keyboard.py
  19. 0  {KeyboardLayoutEditor/src → }/KeyboardLayoutEditor.py
  20. +0 −110 KeyboardLayoutEditor/src/Keycodes.g
  21. +0 −34 KeyboardLayoutEditor/src/KeycodesWalker.g
  22. +0 −41 KeyboardLayoutEditor/src/README.txt
  23. +0 −70 KeyboardLayoutEditor/src/print_tree.py
  24. 0  {Keycodes → }/Keycodes.g
  25. +0 −121 Keycodes/create_keycode_dict.py
  26. +0 −123 Keycodes/extract_keycodes.py
  27. +0 −69 Keycodes/print_tree.py
  28. 0  {KeyboardLayoutEditor/src → }/KeycodesReader.py
  29. 0  {Keycodes → }/KeycodesWalker.g
  30. 0  {KeyboardLayoutEditor/src → }/Keysyms.py
  31. 0  {KeyboardLayoutEditor/src → }/KeysymsUni.py
  32. 0  {KeyboardLayoutEditor/src → }/KeysymsUniByValue.py
  33. 0  {KeyboardLayoutEditor/src → }/Levels.png
  34. 0  {KeyboardLayoutEditor/src → }/Levels.svg
  35. 0  {KeyboardLayoutEditor/src → }/ParseXKB.py
  36. 0  {KeyboardLayoutEditor/src → }/ParseXML.py
  37. 0  KeyboardLayoutEditor/README.txt → README
  38. 0  {KeyboardLayoutEditor/src → }/SelectVariant.py
  39. 0  {KeyboardLayoutEditor/src → }/XKBGrammar.g
  40. +0 −4 XKBGrammar/README
  41. +0 −204 XKBGrammar/XKBGrammar.g
  42. +0 −67 XKBGrammar/XKBGrammar.tokens
  43. +0 −1,595 XKBGrammar/XKBGrammarLexer.py
  44. BIN  XKBGrammar/XKBGrammarLexer.pyc
  45. +0 −2,396 XKBGrammar/XKBGrammarParser.py
  46. BIN  XKBGrammar/XKBGrammarParser.pyc
  47. +0 −58 XKBGrammar/XKBGrammarWalker.g
  48. +0 −53 XKBGrammar/XKBGrammar__.g
  49. +0 −159 XKBGrammar/check_xkb.py
  50. +0 −17 XKBGrammar/gr
  51. +0 −188 XKBGrammar/parse_xkb_to_xml.py
  52. +0 −106 XKBGrammar/parse_xml_to_xkb.py
  53. +0 −129 XKBGrammar/xkb.rng
  54. +0 −118 XKBGrammar/xkbsample.xml
  55. 0  {KeyboardLayoutEditor/src → }/XKBGrammarWalker.g
  56. 0  {KeyboardLayoutEditor/src → }/aliases
  57. 0  {KeyboardLayoutEditor/src → }/evdev
  58. 0  {KeyboardLayoutEditor/src → }/kle-icon.svg
  59. 0  {KeyboardLayoutEditor/src → }/kle-icon2.svg
  60. 0  {KeyboardLayoutEditor/src → }/kle-icon3.svg
  61. 0  {KeyboardLayoutEditor/src → }/kle-icon4.svg
  62. 0  {KeyboardLayoutEditor/src → }/parse_xkb_to_xml.py
  63. 0  {KeyboardLayoutEditor/src → }/parse_xml_to_xkb.py
  64. 0  {XKBGrammar → }/print_tree.py
  65. 0  {KeyboardLayoutEditor/src → }/utils/Keysyms.g
  66. 0  {KeyboardLayoutEditor/src → }/utils/KeysymsWalker.g
  67. 0  {KeyboardLayoutEditor/src → }/utils/extract_keysymdefh.py
  68. 0  {KeyboardLayoutEditor/src → }/utils/extract_keysymstxt.py
  69. 0  {KeyboardLayoutEditor/src → }/utils/keysymdef.h
  70. 0  {KeyboardLayoutEditor/src → }/utils/keysyms.txt
  71. 0  {KeyboardLayoutEditor/src → }/xfree86
View
0  KeyboardLayoutEditor/.project → .project
File renamed without changes
View
0  KeyboardLayoutEditor/.pydevproject → .pydevproject
File renamed without changes
View
0  .../.settings/org.eclipse.ltk.core.refactoring.prefs → .settings/org.eclipse.ltk.core.refactoring.prefs
File renamed without changes
View
0  ...Editor/.settings/org.eclipse.mylyn.tasks.ui.prefs → .settings/org.eclipse.mylyn.tasks.ui.prefs
File renamed without changes
View
0  KeyboardLayoutEditor/src/COPYING → COPYING
File renamed without changes
View
0  KeyboardLayoutEditor/src/Common.py → Common.py
File renamed without changes
View
58 Compose/Compose.g
@@ -1,58 +0,0 @@
-// Compose Grammar (X.org)
-// Written by Simos Xenitellis <simos.lists@googlemail.com>, 2008.
-// Version 0.1
-
-grammar Compose;
-
-options
-{
- language = Python;
- output = AST;
-}
-
-tokens
-{
- COMPOSE;
- CODEPOINT;
- SEQUENCE;
- SYM;
-}
-
-compose
- : sequence+ EOF
- -> ^(COMPOSE sequence+)
- ;
-
-sequence
- : sym+ ':' DQSTRING NAME?
- -> ^(SEQUENCE sym+ ^(CODEPOINT DQSTRING NAME?))
- ;
-
-sym
- : '<' NAME '>'
- -> ^(SYM NAME)
- ;
-
-NAME
- : ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9' )*
- ;
-
-WS
- :
- ( ' ' | '\r' | '\t' | '\u000C' | '\n')
- { $channel=HIDDEN; }
- ;
-
-LINE_COMMENT
- :
- '#' ~('\n' | '\r')* '\r'? '\n'
- { $channel=HIDDEN; }
- ;
-
-/** Match various string types. Note that greedy=false implies '''
- * should make us exit loop not continue.
- */
-DQSTRING
- : '"' str=('\\\"' | (options {greedy=false;}:~('"'))*) '"'
- ;
-
View
16 Compose/ComposeWalker.g
@@ -1,16 +0,0 @@
-// Compose Grammar (X.org)
-// Written by Simos Xenitellis <simos.lists@googlemail.com>, 2008.
-// Version 0.1
-
-tree grammar ComposeWalker;
-
-options
-{
- language = Python;
- tokenVocab = Compose;
- ASTLabelType = CommonTree;
-}
-
-compose : ^(COMPOSE sequence+) ;
-sequence: ^(SEQUENCe sym+ ^(CODEPOINT DQSTRING NAME?)) ;
-sym : ^(SYM NAME) ;
View
71 Compose/print_tree.py
@@ -1,71 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-# Version 0.7
-
-import sys
-import pdb
-import antlr3
-from ComposeLexer import ComposeLexer
-from ComposeParser import ComposeParser
-from ComposeWalker import ComposeWalker
-
-# Helper function to iterate through all children of a given type
-def getChildrenByType(tree, type_value):
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- yield child
-
-# Helper function to iterate through all children of a given type
-def getChildrenListByType(tree, type_value):
- list = []
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- list.append(child)
- return list
-
-xkbfilename = "/usr/share/X11/locale/en_US.UTF-8/Compose"
-if len(sys.argv) > 1:
- xkbfilename = sys.argv[1]
-
-try:
- xkbfile = open(xkbfilename, 'r')
-except OSError:
- print "Could not open file ", xkbfilename, ". Aborting..."
- sys.exit(-1)
-
-xkbfile.close
-
-char_stream = antlr3.ANTLRFileStream(xkbfilename, encoding='utf-8')
-lexer = ComposeLexer(char_stream)
-tokens = antlr3.CommonTokenStream(lexer)
-parser = ComposeParser(tokens)
-
-#pdb.set_trace()
-result = parser.compose()
-
-print "XXXXXXXXXXXXXXXXXXXXXXX", xkbfilename
-print "tree =", result.tree.toStringTree()
-
-nodes = antlr3.tree.CommonTreeNodeStream(result.tree)
-nodes.setTokenStream(tokens)
-walker = ComposeWalker(nodes)
-walker.compose()
-
-
-MAX = 10
-TABS = "\t\t\t\t\t\t\t\t\t\t"
-
-def print_tree(node, depth):
- if depth >= MAX:
- return
- for n in node.getChildren():
- print TABS[:depth], "===", n.getText(), "==="
- print_tree(n, depth + 1)
-
-
-print result.tree.getChild(0).getText()
-print
-print_tree(result.tree, 0)
View
0  KeyboardLayoutEditor/src/DeadKeysDict.py → DeadKeysDict.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/Disconnect. → Disconnect.
File renamed without changes
View
0  KeyboardLayoutEditor/src/DumbKey.py → DumbKey.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/Enum.py → Enum.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/GenericLayout.py → GenericLayout.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/Key.py → Key.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/KeyDict.py → KeyDict.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/KeyValue.py → KeyValue.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/Keyboard.py → Keyboard.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/KeyboardLayoutEditor.py → KeyboardLayoutEditor.py
File renamed without changes
View
110 KeyboardLayoutEditor/src/Keycodes.g
@@ -1,110 +0,0 @@
-// Keycodes Grammar (X.org)
-// Written by Simos Xenitellis <simos.lists@googlemail.com>, 2008.
-// Version 0.8
-
-grammar Keycodes;
-
-options
-{
- language = Python;
- output = AST;
-}
-
-tokens
-{
- KEYCODEDOC;
- KEYCODELIST;
- KEYCODELISTTYPE;
- KEYCODELISTOPTIONS;
- KEYCODELISTOPTS;
- KEYCODELISTNAME;
- KEYCODEMATERIAL;
- INCLUDE;
- MINIMUM;
- MAXIMUM;
- ALIAS;
- INDICATOR;
- KEYCODE;
-}
-
-keycodedoc
- : keycodelist+ EOF
- -> ^(KEYCODEDOC keycodelist+)
- ;
-
-keycodelist
- : keycodelisttype '{' keycodeMaterial+ '}' ';'
- -> ^(KEYCODELIST keycodelisttype ^(KEYCODEMATERIAL keycodeMaterial+))
- ;
-
-keycodelisttype
- : KEYCODELISTOPTS+ DQSTRING
- -> ^(KEYCODELISTTYPE ^(KEYCODELISTOPTIONS KEYCODELISTOPTS+) ^(KEYCODELISTNAME DQSTRING))
- ;
-
-keycodeMaterial
- : line_include
- | line_minmax ';'!
- | line_alias ';'!
- | line_keycode ';'!
- | line_indicator ';'!
- ;
-
-line_include
- : 'include' DQSTRING
- -> ^(INCLUDE DQSTRING)
- ;
-
-line_minmax
- : 'minimum' '=' NAME -> ^(MINIMUM NAME)
- | 'maximum' '=' NAME -> ^(MAXIMUM NAME)
- ;
-
-line_alias
- : 'alias' '<' val+=NAME '>' '=' '<' val+=NAME '>'
- -> ^(ALIAS $val+)
- ;
-
-line_keycode
- : '<' val+=NAME '>' '=' val+=NAME
- -> ^(KEYCODE NAME+)
- ;
-
-line_indicator
- : 'indicator' NAME '=' DQSTRING
- -> ^(INDICATOR NAME DQSTRING)
- ;
-
-KEYCODELISTOPTS
- : 'default'
- | 'xkb_keycodes'
- ;
-
-NAME
- : ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9' | '+' | '-' )*
- ;
-
-WS
- :
- ( ' ' | '\r' | '\t' | '\u000C' | '\n')
- { $channel=HIDDEN; }
- ;
-
-COMMENT
- :
- '/*' .* '*/' {$channel=HIDDEN;}
- ;
-
-LINE_COMMENT
- :
- ('//' | '#') ~('\n' | '\r')* '\r'? '\n'
- { $channel=HIDDEN; }
- ;
-
-/** Match various string types. Note that greedy=false implies '''
- * should make us exit loop not continue.
- */
-DQSTRING
- : '"' ((options {greedy=false;}:~('"'))*) '"'
- ;
-
View
34 KeyboardLayoutEditor/src/KeycodesWalker.g
@@ -1,34 +0,0 @@
-// Keycodes Grammar (X.org)
-// Written by Simos Xenitellis <simos.lists@googlemail.com>, 2008.
-// Version 0.8
-
-tree grammar KeycodesWalker;
-
-options
-{
- language = Python;
- tokenVocab = Keycodes;
- ASTLabelType = CommonTree;
-}
-
-
-keycodedoc
- : ^(KEYCODEDOC keycodelist+)
- ;
-
-keycodelist
- : ^(KEYCODELIST keycodelisttype ^(KEYCODEMATERIAL keycodeMaterial+))
- ;
-
-keycodelisttype
- : ^(KEYCODELISTTYPE ^(KEYCODELISTOPTIONS KEYCODELISTOPTS+) ^(KEYCODELISTNAME DQSTRING))
- ;
-
-keycodeMaterial
- : ^(INCLUDE DQSTRING)
- | ^(MINIMUM NAME)
- | ^(MAXIMUM NAME)
- | ^(ALIAS NAME+)
- | ^(KEYCODE NAME+)
- | ^(INDICATOR NAME DQSTRING)
- ;
View
41 KeyboardLayoutEditor/src/README.txt
@@ -1,41 +0,0 @@
-This is the Keyboard Layout Editor (KLE), a pygtk program that helps create
-or edit XKB keyboard layouts. This allows you to type characters from different
-languages or other special Unicode characters on your Linux desktop.
-
-The project page of the Keyboard Layout Editor is
-http://code.google.com/p/keyboardlayouteditor/
-
-You are strongly encouraged to use the version that is found at the above URL,
-as it includes several bug fixes.
-
-The project was developed using Eclipse (Ganymede), with the Python (PyDev)
-and Antlr (AntlrIDE) add-ons.
-
-PyDev is found at
-http://pydev.sourceforge.net/
-
-AntlrIDE is found at
-http://antlrv3ide.sourceforge.net/
-
-If you also have SVN support in Eclipse (hint: Subclipse),
-you can grab the latest source from within Eclipse.
-There is also integration with Mylene so that you can get the list of
-issues/bugs/todo items automatically.
-
-To run the application, you need the python binding packages for
-* Cairo
-* Pango
-* GObject
-* lxml
-
-and the Antlr 3.1 Runtime environment for Python. You grab that at
-http://antlr.org/download/Python/
-Choose the appropriate *.egg file for the 3.1 version, then type
-
-sudo easy_install antlr_python_runtime-3.1-py2.5.egg
-
-This should do the installation for you.
-
-You run the Keyboard Layout Editor with
-
-./KeyboardLayoutEditor.py
View
70 KeyboardLayoutEditor/src/print_tree.py
@@ -1,70 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-# Version 0.7
-
-import sys
-import pdb
-import antlr3
-from XKBGrammarLexer import XKBGrammarLexer, LAYOUT, SYMBOLS, MAPTYPE, MAPNAME, MAPOPTIONS, MAPMATERIAL, TOKEN_INCLUDE, TOKEN_NAME, TOKEN_KEY_TYPE, TOKEN_KEY, VALUE, KEYCODE, KEYCODEX
-from XKBGrammarParser import XKBGrammarParser
-from XKBGrammarWalker import XKBGrammarWalker
-
-# Helper function to iterate through all children of a given type
-def getChildrenByType(tree, type_value):
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- yield child
-
-# Helper function to iterate through all children of a given type
-def getChildrenListByType(tree, type_value):
- list = []
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- list.append(child)
- return list
-
-xkbfilename = "gr"
-if len(sys.argv) > 1:
- xkbfilename = sys.argv[1]
-
-try:
- xkbfile = open(xkbfilename, 'r')
-except OSError:
- print "Could not open file ", xkbfilename, ". Aborting..."
- sys.exit(-1)
-
-xkbfile.close
-
-# char_stream = antlr3.ANTLRFileStream(xkbfilename, encoding='utf-8')
-char_stream = antlr3.ANTLRFileStream(xkbfilename)
-lexer = XKBGrammarLexer(char_stream)
-tokens = antlr3.CommonTokenStream(lexer)
-parser = XKBGrammarParser(tokens)
-
-result = parser.layout()
-
-print "XXXXXXXXXXXXXXXXXXXXXXX", xkbfilename
-print "tree =", result.tree.toStringTree()
-
-nodes = antlr3.tree.CommonTreeNodeStream(result.tree)
-nodes.setTokenStream(tokens)
-walker = XKBGrammarWalker(nodes)
-# walker.layout()
-
-MAX = 10
-TABS = "\t\t\t\t\t\t\t\t\t\t"
-
-def print_tree(node, depth):
- if depth >= MAX:
- return
- for n in node.getChildren():
- print TABS[:depth], "===", n.getText(), "==="
- print_tree(n, depth + 1)
-
-
-print result.tree.getChild(0).getText()
-print
-print_tree(result.tree, 0)
View
0  Keycodes/Keycodes.g → Keycodes.g
File renamed without changes
View
121 Keycodes/create_keycode_dict.py
@@ -1,121 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-# Version 0.9
-
-import sys
-import pdb
-import antlr3
-import re
-from KeycodesLexer import KeycodesLexer, KEYCODELISTTYPE, KEYCODEMATERIAL, KEYCODELISTOPTIONS, KEYCODELISTNAME, INCLUDE, MINIMUM, MAXIMUM, KEYCODE, ALIAS, INDICATOR
-from KeycodesParser import KeycodesParser
-from KeycodesWalker import KeycodesWalker
-
-# Helper function to iterate through all children of a given type
-def getChildrenByType(tree, type_value):
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- yield child
-
-# Helper function to iterate through all children of a given type
-def getChildrenListByType(tree, type_value):
- list = []
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- list.append(child)
- return list
-
-# Helper function to iterate through all children of a given type
-def getChildrenListValuesByType(tree, type_value):
- list = []
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- list.append(child.getChild(0).getText())
- return list
-
-filename = "xfree86"
-if len(sys.argv) > 1:
- filename = sys.argv[1]
-
-try:
- file = open(filename, 'r')
-except OSError:
- print "Could not open file ", filename, ". Aborting..."
- sys.exit(-1)
-
-file.close
-
-char_stream = antlr3.ANTLRFileStream(filename)
-lexer = KeycodesLexer(char_stream)
-tokens = antlr3.CommonTokenStream(lexer)
-parser = KeycodesParser(tokens)
-
-result = parser.keycodedoc()
-
-#print "XXXXXXXXXXXXXXXXXXXXXXX", filename
-#print "tree =", result.tree.toStringTree()
-
-nodes = antlr3.tree.CommonTreeNodeStream(result.tree)
-nodes.setTokenStream(tokens)
-walker = KeycodesWalker(nodes)
-walker.keycodedoc()
-
-MAX = 10
-TABS = "\t\t\t\t\t\t\t\t\t\t"
-
-def print_tree(node, depth):
- if depth >= MAX:
- return
- for n in node.getChildren():
- print TABS[:depth], "===", n.getText(), "==="
- print_tree(n, depth + 1)
-
-
-#print result.tree.getChild(0).getText()
-#print
-#print_tree(result.tree, 0)
-
-keycodedb = {}
-keycodeid = "xfree86"
-keycodeidinclude = [keycodeid]
-copying = False
-
-for itemKeycodeDoc in result.tree.getChildren():
- listType = getChildrenListByType(itemKeycodeDoc, KEYCODELISTTYPE)
- material = getChildrenListByType(itemKeycodeDoc, KEYCODEMATERIAL)
- if len(listType) != 1:
- print "Requires single node for KEYCODELISTTYPE. Found", len(listType)
- sys.exit(-1)
- if len(material) != 1:
- print "Requires single node for KEYCODEMATERIAL. Found", len(material)
- sys.exit(-1)
-
- for listNameGroup in getChildrenListByType(listType[0], KEYCODELISTNAME):
- for listName in listNameGroup.getChildren():
- if listName.getText()[1:-1] == keycodeid or listName.getText()[1:-1] in keycodeidinclude:
- print "About to process", listName.getText()[1:-1]
- copying = True
-
- for materialIncludeGroup in getChildrenListByType(material[0], INCLUDE):
- for includeName in materialIncludeGroup.getChildren():
- includeKeycodelist = re.findall('(\w+)\((\w+)\)', includeName.getText()[1:-1])
- if includeKeycodelist[0][1] not in keycodeidinclude:
- print "Added", includeKeycodelist[0][0], includeKeycodelist[0][1]
- keycodeidinclude.append(includeKeycodelist[0][1])
-
- for keycode in getChildrenListByType(material[0], KEYCODE):
- keycodedb[keycode.getChild(0).getText()] = keycode.getChild(1).getText()
-
- for alias in getChildrenListByType(material[0], ALIAS):
- keycodedb[alias.getChild(0).getText()] = keycodedb[alias.getChild(1).getText()]
-
- for indicator in getChildrenListByType(material[0], INDICATOR):
- pass
-
- copying = False
-
-for item in keycodedb.keys():
- print item, keycodedb[item]
View
123 Keycodes/extract_keycodes.py
@@ -1,123 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-# Version 0.9
-
-import sys
-import pdb
-import antlr3
-from KeycodesLexer import KeycodesLexer, KEYCODELISTTYPE, KEYCODEMATERIAL, KEYCODELISTOPTIONS, KEYCODELISTNAME, INCLUDE, MINIMUM, MAXIMUM, KEYCODE, ALIAS, INDICATOR
-from KeycodesParser import KeycodesParser
-from KeycodesWalker import KeycodesWalker
-
-# Helper function to iterate through all children of a given type
-def getChildrenByType(tree, type_value):
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- yield child
-
-# Helper function to iterate through all children of a given type
-def getChildrenListByType(tree, type_value):
- list = []
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- list.append(child)
- return list
-
-# Helper function to iterate through all children of a given type
-def getChildrenListValuesByType(tree, type_value):
- list = []
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- list.append(child.getChild(0).getText())
- return list
-
-filename = "xfree86"
-if len(sys.argv) > 1:
- filename = sys.argv[1]
-
-try:
- file = open(filename, 'r')
-except OSError:
- print "Could not open file ", filename, ". Aborting..."
- sys.exit(-1)
-
-file.close
-
-char_stream = antlr3.ANTLRFileStream(filename)
-lexer = KeycodesLexer(char_stream)
-tokens = antlr3.CommonTokenStream(lexer)
-parser = KeycodesParser(tokens)
-
-result = parser.keycodedoc()
-
-#print "XXXXXXXXXXXXXXXXXXXXXXX", filename
-#print "tree =", result.tree.toStringTree()
-
-nodes = antlr3.tree.CommonTreeNodeStream(result.tree)
-nodes.setTokenStream(tokens)
-walker = KeycodesWalker(nodes)
-walker.keycodedoc()
-
-MAX = 10
-TABS = "\t\t\t\t\t\t\t\t\t\t"
-
-def print_tree(node, depth):
- if depth >= MAX:
- return
- for n in node.getChildren():
- print TABS[:depth], "===", n.getText(), "==="
- print_tree(n, depth + 1)
-
-
-#print result.tree.getChild(0).getText()
-#print
-#print_tree(result.tree, 0)
-
-for itemKeycodeDoc in result.tree.getChildren():
- listType = getChildrenListByType(itemKeycodeDoc, KEYCODELISTTYPE)
- material = getChildrenListByType(itemKeycodeDoc, KEYCODEMATERIAL)
- if len(listType) != 1:
- print "Requires single node for KEYCODELISTTYPE. Found", len(listType)
- sys.exit(-1)
- if len(material) != 1:
- print "Requires single node for KEYCODEMATERIAL. Found", len(material)
- sys.exit(-1)
-
- for listOptionsGroup in getChildrenListByType(listType[0], KEYCODELISTOPTIONS):
- for listOptions in listOptionsGroup.getChildren():
- print listOptions.getText(),
- for listNameGroup in getChildrenListByType(listType[0], KEYCODELISTNAME):
- for listName in listNameGroup.getChildren():
- print listName.getText(),
- print "{"
-
- for materialIncludeGroup in getChildrenListByType(material[0], INCLUDE):
- for includeName in materialIncludeGroup.getChildren():
- print "\tinclude", includeName.getText()
-
- if len(getChildrenListByType(material[0], MINIMUM)) not in [0, 1]:
- print "More than one Minimum entries found. Aborting..."
- sys.exit(-1)
- if len(getChildrenListByType(material[0], MAXIMUM)) not in [0, 1]:
- print "More than one Maximym entries found. Aborting..."
- sys.exit(-1)
- if len(getChildrenListByType(material[0], MINIMUM)) == 1:
- print "\tminimum %(v)s;" % { "v": getChildrenListByType(material[0], MINIMUM)[0].getChild(0).getText() }
- if len(getChildrenListByType(material[0], MAXIMUM)) == 1:
- print "\tmaximum %(v)s;" % { "v": getChildrenListByType(material[0], MAXIMUM)[0].getChild(0).getText() }
-
- for keycode in getChildrenListByType(material[0], KEYCODE):
- print "\tkeycode <%(k)s> = %(v)s;" % { "k": keycode.getChild(0).getText(), "v": keycode.getChild(1).getText()}
-
- for alias in getChildrenListByType(material[0], ALIAS):
- print "\talias <%(k1)s> = <%(k2)s>;" % { "k1": alias.getChild(0).getText(), "k2": alias.getChild(1).getText()}
-
- for indicator in getChildrenListByType(material[0], INDICATOR):
- print "\tindicator %(id)s = %(val)s;" % { "id": indicator.getChild(0).getText(), "val": indicator.getChild(1).getText()}
-
- print '};\n'
-
View
69 Keycodes/print_tree.py
@@ -1,69 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-# Version 0.8
-
-import sys
-import pdb
-import antlr3
-from KeycodesLexer import KeycodesLexer
-from KeycodesParser import KeycodesParser
-from KeycodesWalker import KeycodesWalker
-
-# Helper function to iterate through all children of a given type
-def getChildrenByType(tree, type_value):
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- yield child
-
-# Helper function to iterate through all children of a given type
-def getChildrenListByType(tree, type_value):
- list = []
- for i in range(tree.getChildCount()):
- child = tree.getChild(i)
- if child.getType() == type_value:
- list.append(child)
- return list
-
-filename = "xfree86"
-if len(sys.argv) > 1:
- filename = sys.argv[1]
-
-try:
- file = open(filename, 'r')
-except OSError:
- print "Could not open file ", filename, ". Aborting..."
- sys.exit(-1)
-
-file.close
-
-char_stream = antlr3.ANTLRFileStream(filename)
-lexer = KeycodesLexer(char_stream)
-tokens = antlr3.CommonTokenStream(lexer)
-parser = KeycodesParser(tokens)
-
-result = parser.keycodedoc()
-
-print "XXXXXXXXXXXXXXXXXXXXXXX", filename
-print "tree =", result.tree.toStringTree()
-
-nodes = antlr3.tree.CommonTreeNodeStream(result.tree)
-nodes.setTokenStream(tokens)
-walker = KeycodesWalker(nodes)
-walker.keycodedoc()
-
-MAX = 10
-TABS = "\t\t\t\t\t\t\t\t\t\t"
-
-def print_tree(node, depth):
- if depth >= MAX:
- return
- for n in node.getChildren():
- print TABS[:depth], "===", n.getText(), "==="
- print_tree(n, depth + 1)
-
-
-print result.tree.getChild(0).getText()
-print
-print_tree(result.tree, 0)
View
0  KeyboardLayoutEditor/src/KeycodesReader.py → KeycodesReader.py
File renamed without changes
View
0  Keycodes/KeycodesWalker.g → KeycodesWalker.g
File renamed without changes
View
0  KeyboardLayoutEditor/src/Keysyms.py → Keysyms.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/KeysymsUni.py → KeysymsUni.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/KeysymsUniByValue.py → KeysymsUniByValue.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/Levels.png → Levels.png
File renamed without changes
View
0  KeyboardLayoutEditor/src/Levels.svg → Levels.svg
File renamed without changes
View
0  KeyboardLayoutEditor/src/ParseXKB.py → ParseXKB.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/ParseXML.py → ParseXML.py
File renamed without changes
View
0  KeyboardLayoutEditor/README.txt → README
File renamed without changes
View
0  KeyboardLayoutEditor/src/SelectVariant.py → SelectVariant.py
File renamed without changes
View
0  KeyboardLayoutEditor/src/XKBGrammar.g → XKBGrammar.g
File renamed without changes
View
4 XKBGrammar/README
@@ -1,4 +0,0 @@
-
-To check if some files are non-UTF-8, use
-find . -type f | awk '{ printf "echo %s; iconv -f utf-8 -t utf-8 < %s > /dev/null \n", $1, $1 }' | sh
-
View
204 XKBGrammar/XKBGrammar.g
@@ -1,204 +0,0 @@
-// XKB Grammar (X.org)
-// Written by Simos Xenitellis <simos.lists@googlemail.com>, 2008.
-// Version 0.8
-
-grammar XKBGrammar;
-
-options
-{
- language = Python;
- output = AST;
-}
-
-tokens
-{
- // Keywords
- TOKEN_INCLUDE;
- TOKEN_KEY_TYPE;
- TOKEN_NAME;
- TOKEN_KEY;
- TOKEN_TYPE;
- TOKEN_MODIFIER_MAP;
- TOKEN_SYMBOL;
- TOKEN_VIRTUAL_MODIFIERS;
-
- // Tokens for tree.
- LAYOUT;
- SYMBOLS;
- MAPTYPE;
- MAPNAME;
- MAPOPTIONS;
- MAPMATERIAL;
- KEYCODE;
- KEYCODEX;
- VALUE;
- STATE;
- ELEM_KEYSYMGROUP;
- ELEM_KEYSYMS;
- ELEM_VIRTUALMODS;
- KEYELEMENTS;
- OVERRIDE;
- OVERLAY;
-}
-
-// We cover XKB symbol files that look like
-//
-// // comments can appear here.
-// one of more modifiers "mysymbolsname"
-// {
-// // comments can appear here.
-// include "somename" // comments can also appear here.
-// name[somestring] = "sometext";
-// key.type[someotherstring] = "someothertext";
-// key <someotherstring> { [ somesymbol, someothersymbol, ... uptoEightSymbols ] };
-// modifier_map someothertext { somesymbol, someothersymbol, ... uptoEightSymbols };
-// // can also have multiples of the above.
-// };
-//
-// // can have several symbol sections as above.
-
-layout
- : symbols+ EOF
- -> ^(LAYOUT symbols+)
- ;
-
-symbols
- : mapType '{' mapMaterial+ '}' ';'
- -> ^(SYMBOLS mapType ^(MAPMATERIAL mapMaterial+))
- ;
-
-mapType
- : MAPOPTS+ DQSTRING
- -> ^(MAPTYPE ^(MAPOPTIONS MAPOPTS+) ^(MAPNAME DQSTRING))
- ;
-
-mapMaterial
- : line_include
- | line_name ';'!
- | line_keytype ';'!
- | line_key ';'!
- | line_modifier_map ';'!
- | line_virtual_modifiers ';'!
- ;
-
-line_include
- : 'include' DQSTRING
- -> ^(TOKEN_INCLUDE DQSTRING)
- ;
-
-line_name
- : 'name' ('[' NAME ']')? '=' DQSTRING
- -> ^(TOKEN_NAME DQSTRING)
- ;
-
-line_keytype
- : 'key.type' ('[' NAME ']')? '=' DQSTRING
- -> ^(TOKEN_KEY_TYPE DQSTRING)
- ;
-
-line_key
- : OVERRIDE? 'key' '<' NAME '>' '{' keyelements (',' keyelements)* '}'
- -> ^(TOKEN_KEY OVERRIDE? ^(KEYCODEX NAME) keyelements+)
- ;
-
-line_modifier_map
- : 'modifier_map' STATE '{' keycode (',' keycode)* '}'
- -> ^(TOKEN_MODIFIER_MAP STATE keycode+)
- ;
-
-line_virtual_modifiers
- : 'virtual_modifiers' NAME (',' NAME)*
- -> ^(TOKEN_VIRTUAL_MODIFIERS NAME+)
- ;
-
-keycode
- : '<' NAME '>' -> ^(KEYCODEX NAME)
- | NAME -> ^(KEYCODE NAME)
- ;
-
-override
- : 'override'
- ;
-
-keyelements
- : elem_keysyms
- | elem_keysymgroup
- | elem_virtualmods
- | elem_overlay
- ;
-
-elem_keysyms
- : 'type' ('[' NAME ']')? '=' DQSTRING
- -> ^(ELEM_KEYSYMS DQSTRING)
- ;
-
-elem_keysymgroup
- : ('symbols' '[' NAME ']' '=')? '[' keysym+=NAME (',' keysym+=NAME)* ']'
- -> ^(ELEM_KEYSYMGROUP ^(VALUE $keysym+ ))
- ;
-
-elem_virtualmods
- : ('virtualMods' '=' NAME)
- -> ^(ELEM_VIRTUALMODS NAME)
- ;
-
-elem_overlay
- : NAME '=' keycode
- -> ^(OVERLAY NAME keycode)
- ;
-
-MAPOPTS
- : 'default'
- | 'hidden'
- | 'partial'
- | 'alphanumeric_keys'
- | 'keypad_keys'
- | 'function_keys'
- | 'modifier_keys'
- | 'alternate_group'
- | 'xkb_symbols'
- ;
-
-STATE
- : 'Shift'
- | 'Control'
- | 'Lock'
- | 'Mod1'
- | 'Mod2'
- | 'Mod3'
- | 'Mod4'
- | 'Mod5'
- ;
-
-OVERRIDE
- : 'override'
- ;
-
-NAME
- : ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9' | '+' | '-' )*
- ;
-
-WS
- :
- ( ' ' | '\r' | '\t' | '\u000C' | '\n')
- { $channel=HIDDEN; }
- ;
-
-COMMENT
- :
- '/*' .* '*/' {$channel=HIDDEN;}
- ;
-
-LINE_COMMENT
- :
- ('//' | '#') ~('\n' | '\r')* '\r'? '\n'
- { $channel=HIDDEN; }
- ;
-
-/** Match various string types. Note that greedy=false implies '''
- * should make us exit loop not continue.
- */
-DQSTRING
- : '"' (options {greedy=false;}:~('"'))* '"'
- ;
-
View
67 XKBGrammar/XKBGrammar.tokens
@@ -1,67 +0,0 @@
-MAPOPTIONS=16
-OVERLAY=27
-TOKEN_INCLUDE=4
-ELEM_VIRTUALMODS=24
-ELEM_KEYSYMS=23
-TOKEN_MODIFIER_MAP=9
-TOKEN_TYPE=8
-MAPTYPE=14
-TOKEN_VIRTUAL_MODIFIERS=11
-NAME=30
-T__51=51
-MAPMATERIAL=17
-MAPOPTS=28
-COMMENT=32
-DQSTRING=29
-T__50=50
-T__42=42
-T__43=43
-T__40=40
-STATE=21
-T__41=41
-T__46=46
-T__47=47
-T__44=44
-T__45=45
-LINE_COMMENT=33
-KEYCODE=18
-T__48=48
-T__49=49
-TOKEN_NAME=6
-VALUE=20
-LAYOUT=12
-WS=31
-T__34=34
-T__35=35
-T__36=36
-T__37=37
-OVERRIDE=26
-T__38=38
-T__39=39
-TOKEN_SYMBOL=10
-ELEM_KEYSYMGROUP=22
-TOKEN_KEY=7
-MAPNAME=15
-SYMBOLS=13
-KEYELEMENTS=25
-TOKEN_KEY_TYPE=5
-KEYCODEX=19
-'}'=35
-'virtual_modifiers'=48
-'override'=26
-'key'=43
-'symbols'=50
-'type'=49
-'{'=34
-'>'=45
-'include'=37
-';'=36
-'='=41
-'virtualMods'=51
-'key.type'=42
-'<'=44
-'['=39
-'name'=38
-','=46
-'modifier_map'=47
-']'=40
View
1,595 XKBGrammar/XKBGrammarLexer.py
@@ -1,1595 +0,0 @@
-# $ANTLR 3.1b1 XKBGrammar.g 2008-06-20 23:20:20
-
-import sys
-from antlr3 import *
-from antlr3.compat import set, frozenset
-
-
-# for convenience in actions
-HIDDEN = BaseRecognizer.HIDDEN
-
-# token types
-MAPOPTIONS=16
-OVERLAY=27
-TOKEN_INCLUDE=4
-ELEM_VIRTUALMODS=24
-ELEM_KEYSYMS=23
-TOKEN_MODIFIER_MAP=9
-EOF=-1
-TOKEN_TYPE=8
-MAPTYPE=14
-TOKEN_VIRTUAL_MODIFIERS=11
-NAME=30
-T__51=51
-MAPMATERIAL=17
-MAPOPTS=28
-COMMENT=32
-DQSTRING=29
-T__50=50
-T__42=42
-T__43=43
-T__40=40
-STATE=21
-T__41=41
-T__46=46
-T__47=47
-T__44=44
-T__45=45
-LINE_COMMENT=33
-KEYCODE=18
-T__48=48
-T__49=49
-TOKEN_NAME=6
-VALUE=20
-LAYOUT=12
-WS=31
-T__34=34
-T__35=35
-T__36=36
-T__37=37
-OVERRIDE=26
-T__38=38
-T__39=39
-ELEM_KEYSYMGROUP=22
-TOKEN_SYMBOL=10
-MAPNAME=15
-TOKEN_KEY=7
-SYMBOLS=13
-KEYELEMENTS=25
-TOKEN_KEY_TYPE=5
-KEYCODEX=19
-
-
-class XKBGrammarLexer(Lexer):
-
- grammarFileName = "XKBGrammar.g"
-
- def __init__(self, input=None, state=None):
- if state is None:
- state = RecognizerSharedState()
- Lexer.__init__(self, input, state)
-
- self.dfa1 = self.DFA1(
- self, 1,
- eot = self.DFA1_eot,
- eof = self.DFA1_eof,
- min = self.DFA1_min,
- max = self.DFA1_max,
- accept = self.DFA1_accept,
- special = self.DFA1_special,
- transition = self.DFA1_transition
- )
-
- self.dfa2 = self.DFA2(
- self, 2,
- eot = self.DFA2_eot,
- eof = self.DFA2_eof,
- min = self.DFA2_min,
- max = self.DFA2_max,
- accept = self.DFA2_accept,
- special = self.DFA2_special,
- transition = self.DFA2_transition
- )
-
- self.dfa9 = self.DFA9(
- self, 9,
- eot = self.DFA9_eot,
- eof = self.DFA9_eof,
- min = self.DFA9_min,
- max = self.DFA9_max,
- accept = self.DFA9_accept,
- special = self.DFA9_special,
- transition = self.DFA9_transition
- )
-
-
-
-
-
-
- # $ANTLR start T__34
- def mT__34(self, ):
-
- try:
- _type = T__34
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:7:7: ( '{' )
- # XKBGrammar.g:7:9: '{'
- self.match(123)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__34
-
-
-
- # $ANTLR start T__35
- def mT__35(self, ):
-
- try:
- _type = T__35
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:8:7: ( '}' )
- # XKBGrammar.g:8:9: '}'
- self.match(125)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__35
-
-
-
- # $ANTLR start T__36
- def mT__36(self, ):
-
- try:
- _type = T__36
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:9:7: ( ';' )
- # XKBGrammar.g:9:9: ';'
- self.match(59)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__36
-
-
-
- # $ANTLR start T__37
- def mT__37(self, ):
-
- try:
- _type = T__37
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:10:7: ( 'include' )
- # XKBGrammar.g:10:9: 'include'
- self.match("include")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__37
-
-
-
- # $ANTLR start T__38
- def mT__38(self, ):
-
- try:
- _type = T__38
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:11:7: ( 'name' )
- # XKBGrammar.g:11:9: 'name'
- self.match("name")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__38
-
-
-
- # $ANTLR start T__39
- def mT__39(self, ):
-
- try:
- _type = T__39
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:12:7: ( '[' )
- # XKBGrammar.g:12:9: '['
- self.match(91)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__39
-
-
-
- # $ANTLR start T__40
- def mT__40(self, ):
-
- try:
- _type = T__40
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:13:7: ( ']' )
- # XKBGrammar.g:13:9: ']'
- self.match(93)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__40
-
-
-
- # $ANTLR start T__41
- def mT__41(self, ):
-
- try:
- _type = T__41
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:14:7: ( '=' )
- # XKBGrammar.g:14:9: '='
- self.match(61)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__41
-
-
-
- # $ANTLR start T__42
- def mT__42(self, ):
-
- try:
- _type = T__42
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:15:7: ( 'key.type' )
- # XKBGrammar.g:15:9: 'key.type'
- self.match("key.type")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__42
-
-
-
- # $ANTLR start T__43
- def mT__43(self, ):
-
- try:
- _type = T__43
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:16:7: ( 'key' )
- # XKBGrammar.g:16:9: 'key'
- self.match("key")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__43
-
-
-
- # $ANTLR start T__44
- def mT__44(self, ):
-
- try:
- _type = T__44
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:17:7: ( '<' )
- # XKBGrammar.g:17:9: '<'
- self.match(60)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__44
-
-
-
- # $ANTLR start T__45
- def mT__45(self, ):
-
- try:
- _type = T__45
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:18:7: ( '>' )
- # XKBGrammar.g:18:9: '>'
- self.match(62)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__45
-
-
-
- # $ANTLR start T__46
- def mT__46(self, ):
-
- try:
- _type = T__46
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:19:7: ( ',' )
- # XKBGrammar.g:19:9: ','
- self.match(44)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__46
-
-
-
- # $ANTLR start T__47
- def mT__47(self, ):
-
- try:
- _type = T__47
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:20:7: ( 'modifier_map' )
- # XKBGrammar.g:20:9: 'modifier_map'
- self.match("modifier_map")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__47
-
-
-
- # $ANTLR start T__48
- def mT__48(self, ):
-
- try:
- _type = T__48
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:21:7: ( 'virtual_modifiers' )
- # XKBGrammar.g:21:9: 'virtual_modifiers'
- self.match("virtual_modifiers")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__48
-
-
-
- # $ANTLR start T__49
- def mT__49(self, ):
-
- try:
- _type = T__49
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:22:7: ( 'type' )
- # XKBGrammar.g:22:9: 'type'
- self.match("type")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__49
-
-
-
- # $ANTLR start T__50
- def mT__50(self, ):
-
- try:
- _type = T__50
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:23:7: ( 'symbols' )
- # XKBGrammar.g:23:9: 'symbols'
- self.match("symbols")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__50
-
-
-
- # $ANTLR start T__51
- def mT__51(self, ):
-
- try:
- _type = T__51
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:24:7: ( 'virtualMods' )
- # XKBGrammar.g:24:9: 'virtualMods'
- self.match("virtualMods")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end T__51
-
-
-
- # $ANTLR start MAPOPTS
- def mMAPOPTS(self, ):
-
- try:
- _type = MAPOPTS
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:151:2: ( 'default' | 'hidden' | 'partial' | 'alphanumeric_keys' | 'keypad_keys' | 'function_keys' | 'modifier_keys' | 'alternate_group' | 'xkb_symbols' )
- alt1 = 9
- alt1 = self.dfa1.predict(self.input)
- if alt1 == 1:
- # XKBGrammar.g:151:4: 'default'
- self.match("default")
-
-
-
- elif alt1 == 2:
- # XKBGrammar.g:152:4: 'hidden'
- self.match("hidden")
-
-
-
- elif alt1 == 3:
- # XKBGrammar.g:153:4: 'partial'
- self.match("partial")
-
-
-
- elif alt1 == 4:
- # XKBGrammar.g:154:4: 'alphanumeric_keys'
- self.match("alphanumeric_keys")
-
-
-
- elif alt1 == 5:
- # XKBGrammar.g:155:4: 'keypad_keys'
- self.match("keypad_keys")
-
-
-
- elif alt1 == 6:
- # XKBGrammar.g:156:4: 'function_keys'
- self.match("function_keys")
-
-
-
- elif alt1 == 7:
- # XKBGrammar.g:157:4: 'modifier_keys'
- self.match("modifier_keys")
-
-
-
- elif alt1 == 8:
- # XKBGrammar.g:158:4: 'alternate_group'
- self.match("alternate_group")
-
-
-
- elif alt1 == 9:
- # XKBGrammar.g:159:4: 'xkb_symbols'
- self.match("xkb_symbols")
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end MAPOPTS
-
-
-
- # $ANTLR start STATE
- def mSTATE(self, ):
-
- try:
- _type = STATE
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:163:2: ( 'Shift' | 'Control' | 'Lock' | 'Mod1' | 'Mod2' | 'Mod3' | 'Mod4' | 'Mod5' )
- alt2 = 8
- alt2 = self.dfa2.predict(self.input)
- if alt2 == 1:
- # XKBGrammar.g:163:4: 'Shift'
- self.match("Shift")
-
-
-
- elif alt2 == 2:
- # XKBGrammar.g:164:4: 'Control'
- self.match("Control")
-
-
-
- elif alt2 == 3:
- # XKBGrammar.g:165:4: 'Lock'
- self.match("Lock")
-
-
-
- elif alt2 == 4:
- # XKBGrammar.g:166:4: 'Mod1'
- self.match("Mod1")
-
-
-
- elif alt2 == 5:
- # XKBGrammar.g:167:4: 'Mod2'
- self.match("Mod2")
-
-
-
- elif alt2 == 6:
- # XKBGrammar.g:168:4: 'Mod3'
- self.match("Mod3")
-
-
-
- elif alt2 == 7:
- # XKBGrammar.g:169:4: 'Mod4'
- self.match("Mod4")
-
-
-
- elif alt2 == 8:
- # XKBGrammar.g:170:4: 'Mod5'
- self.match("Mod5")
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end STATE
-
-
-
- # $ANTLR start OVERRIDE
- def mOVERRIDE(self, ):
-
- try:
- _type = OVERRIDE
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:174:2: ( 'override' )
- # XKBGrammar.g:174:4: 'override'
- self.match("override")
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end OVERRIDE
-
-
-
- # $ANTLR start NAME
- def mNAME(self, ):
-
- try:
- _type = NAME
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:178:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '+' | '-' )* )
- # XKBGrammar.g:178:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '+' | '-' )*
- # XKBGrammar.g:178:4: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' | '+' | '-' )*
- while True: #loop3
- alt3 = 2
- LA3_0 = self.input.LA(1)
-
- if (LA3_0 == 43 or LA3_0 == 45 or (48 <= LA3_0 <= 57) or (65 <= LA3_0 <= 90) or LA3_0 == 95 or (97 <= LA3_0 <= 122)) :
- alt3 = 1
-
-
- if alt3 == 1:
- # XKBGrammar.g:
- if self.input.LA(1) == 43 or self.input.LA(1) == 45 or (48 <= self.input.LA(1) <= 57) or (65 <= self.input.LA(1) <= 90) or self.input.LA(1) == 95 or (97 <= self.input.LA(1) <= 122):
- self.input.consume();
- else:
- mse = MismatchedSetException(None, self.input)
- self.recover(mse)
- raise mse
-
-
-
- else:
- break #loop3
-
-
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end NAME
-
-
-
- # $ANTLR start WS
- def mWS(self, ):
-
- try:
- _type = WS
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:182:2: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
- # XKBGrammar.g:183:2: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
- if (9 <= self.input.LA(1) <= 10) or (12 <= self.input.LA(1) <= 13) or self.input.LA(1) == 32:
- self.input.consume();
- else:
- mse = MismatchedSetException(None, self.input)
- self.recover(mse)
- raise mse
-
- #action start
- _channel=HIDDEN;
- #action end
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end WS
-
-
-
- # $ANTLR start COMMENT
- def mCOMMENT(self, ):
-
- try:
- _type = COMMENT
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:188:6: ( '/*' ( . )* '*/' )
- # XKBGrammar.g:189:2: '/*' ( . )* '*/'
- self.match("/*")
- # XKBGrammar.g:189:7: ( . )*
- while True: #loop4
- alt4 = 2
- LA4_0 = self.input.LA(1)
-
- if (LA4_0 == 42) :
- LA4_1 = self.input.LA(2)
-
- if (LA4_1 == 47) :
- alt4 = 2
- elif ((0 <= LA4_1 <= 46) or (48 <= LA4_1 <= 65534)) :
- alt4 = 1
-
-
- elif ((0 <= LA4_0 <= 41) or (43 <= LA4_0 <= 65534)) :
- alt4 = 1
-
-
- if alt4 == 1:
- # XKBGrammar.g:189:7: .
- self.matchAny()
-
-
-
- else:
- break #loop4
-
-
- self.match("*/")
- #action start
- _channel=HIDDEN;
- #action end
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end COMMENT
-
-
-
- # $ANTLR start LINE_COMMENT
- def mLINE_COMMENT(self, ):
-
- try:
- _type = LINE_COMMENT
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:193:6: ( ( '//' | '#' ) (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
- # XKBGrammar.g:194:2: ( '//' | '#' ) (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
- # XKBGrammar.g:194:2: ( '//' | '#' )
- alt5 = 2
- LA5_0 = self.input.LA(1)
-
- if (LA5_0 == 47) :
- alt5 = 1
- elif (LA5_0 == 35) :
- alt5 = 2
- else:
- nvae = NoViableAltException("", 5, 0, self.input)
-
- raise nvae
-
- if alt5 == 1:
- # XKBGrammar.g:194:3: '//'
- self.match("//")
-
-
-
- elif alt5 == 2:
- # XKBGrammar.g:194:10: '#'
- self.match(35)
-
-
-
-
- # XKBGrammar.g:194:16: (~ ( '\\n' | '\\r' ) )*
- while True: #loop6
- alt6 = 2
- LA6_0 = self.input.LA(1)
-
- if ((0 <= LA6_0 <= 9) or (11 <= LA6_0 <= 12) or (14 <= LA6_0 <= 65534)) :
- alt6 = 1
-
-
- if alt6 == 1:
- # XKBGrammar.g:194:16: ~ ( '\\n' | '\\r' )
- if (0 <= self.input.LA(1) <= 9) or (11 <= self.input.LA(1) <= 12) or (14 <= self.input.LA(1) <= 65534):
- self.input.consume();
- else:
- mse = MismatchedSetException(None, self.input)
- self.recover(mse)
- raise mse
-
-
-
-
- else:
- break #loop6
-
-
- # XKBGrammar.g:194:32: ( '\\r' )?
- alt7 = 2
- LA7_0 = self.input.LA(1)
-
- if (LA7_0 == 13) :
- alt7 = 1
- if alt7 == 1:
- # XKBGrammar.g:194:32: '\\r'
- self.match(13)
-
-
-
-
- self.match(10)
- #action start
- _channel=HIDDEN;
- #action end
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end LINE_COMMENT
-
-
-
- # $ANTLR start DQSTRING
- def mDQSTRING(self, ):
-
- try:
- _type = DQSTRING
- _channel = DEFAULT_CHANNEL
-
- # XKBGrammar.g:202:6: ( '\"' ( options {greedy=false; } : ~ ( '\"' ) )* '\"' )
- # XKBGrammar.g:202:10: '\"' ( options {greedy=false; } : ~ ( '\"' ) )* '\"'
- self.match(34)
- # XKBGrammar.g:202:14: ( options {greedy=false; } : ~ ( '\"' ) )*
- while True: #loop8
- alt8 = 2
- LA8_0 = self.input.LA(1)
-
- if ((0 <= LA8_0 <= 33) or (35 <= LA8_0 <= 65534)) :
- alt8 = 1
- elif (LA8_0 == 34) :
- alt8 = 2
-
-
- if alt8 == 1:
- # XKBGrammar.g:202:39: ~ ( '\"' )
- if (0 <= self.input.LA(1) <= 33) or (35 <= self.input.LA(1) <= 65534):
- self.input.consume();
- else:
- mse = MismatchedSetException(None, self.input)
- self.recover(mse)
- raise mse
-
-
-
-
- else:
- break #loop8
-
-
- self.match(34)
-
-
-
-
- self._state.type = _type
- self._state.channel = _channel
-
- finally:
-
- pass
-
- # $ANTLR end DQSTRING
-
-
-
- def mTokens(self):
- # XKBGrammar.g:1:8: ( T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | MAPOPTS | STATE | OVERRIDE | NAME | WS | COMMENT | LINE_COMMENT | DQSTRING )
- alt9 = 26
- alt9 = self.dfa9.predict(self.input)
- if alt9 == 1:
- # XKBGrammar.g:1:10: T__34
- self.mT__34()
-
-
-
- elif alt9 == 2:
- # XKBGrammar.g:1:16: T__35
- self.mT__35()
-
-
-
- elif alt9 == 3:
- # XKBGrammar.g:1:22: T__36
- self.mT__36()
-
-
-
- elif alt9 == 4:
- # XKBGrammar.g:1:28: T__37
- self.mT__37()
-
-
-
- elif alt9 == 5:
- # XKBGrammar.g:1:34: T__38
- self.mT__38()
-
-
-
- elif alt9 == 6:
- # XKBGrammar.g:1:40: T__39
- self.mT__39()
-
-
-
- elif alt9 == 7:
- # XKBGrammar.g:1:46: T__40
- self.mT__40()
-
-
-
- elif alt9 == 8:
- # XKBGrammar.g:1:52: T__41
- self.mT__41()
-
-
-
- elif alt9 == 9:
- # XKBGrammar.g:1:58: T__42
- self.mT__42()
-
-
-
- elif alt9 == 10:
- # XKBGrammar.g:1:64: T__43
- self.mT__43()
-
-
-
- elif alt9 == 11:
- # XKBGrammar.g:1:70: T__44
- self.mT__44()
-
-
-
- elif alt9 == 12:
- # XKBGrammar.g:1:76: T__45
- self.mT__45()
-
-
-
- elif alt9 == 13:
- # XKBGrammar.g:1:82: T__46
- self.mT__46()
-
-
-
- elif alt9 == 14:
- # XKBGrammar.g:1:88: T__47
- self.mT__47()
-
-
-
- elif alt9 == 15:
- # XKBGrammar.g:1:94: T__48
- self.mT__48()
-
-
-
- elif alt9 == 16:
- # XKBGrammar.g:1:100: T__49
- self.mT__49()
-
-
-
- elif alt9 == 17:
- # XKBGrammar.g:1:106: T__50
- self.mT__50()
-
-
-
- elif alt9 == 18:
- # XKBGrammar.g:1:112: T__51
- self.mT__51()
-
-
-
- elif alt9 == 19:
- # XKBGrammar.g:1:118: MAPOPTS
- self.mMAPOPTS()
-
-
-
- elif alt9 == 20:
- # XKBGrammar.g:1:126: STATE
- self.mSTATE()
-
-
-
- elif alt9 == 21:
- # XKBGrammar.g:1:132: OVERRIDE
- self.mOVERRIDE()
-
-
-
- elif alt9 == 22:
- # XKBGrammar.g:1:141: NAME
- self.mNAME()
-
-
-
- elif alt9 == 23:
- # XKBGrammar.g:1:146: WS
- self.mWS()
-
-
-
- elif alt9 == 24:
- # XKBGrammar.g:1:149: COMMENT
- self.mCOMMENT()
-
-
-
- elif alt9 == 25:
- # XKBGrammar.g:1:157: LINE_COMMENT
- self.mLINE_COMMENT()
-
-
-
- elif alt9 == 26:
- # XKBGrammar.g:1:170: DQSTRING
- self.mDQSTRING()
-
-
-
-
-
-
-
-
- # lookup tables for DFA #1
-
- DFA1_eot = DFA.unpack(
- u"\14\uffff"
- )
-
- DFA1_eof = DFA.unpack(
- u"\14\uffff"
- )
-
- DFA1_min = DFA.unpack(
- u"\1\141\3\uffff\1\154\4\uffff\1\160\2\uffff"
- )
-
- DFA1_max = DFA.unpack(
- u"\1\170\3\uffff\1\154\4\uffff\1\164\2\uffff"
- )
-
- DFA1_accept = DFA.unpack(
- u"\1\uffff\1\1\1\2\1\3\1\uffff\1\5\1\6\1\7\1\11\1\uffff\1\4\1\10"
- )
-
- DFA1_special = DFA.unpack(
- u"\14\uffff"
- )
-
-
- DFA1_transition = [
- DFA.unpack(u"\1\4\2\uffff\1\1\1\uffff\1\6\1\uffff\1\2\2\uffff\1\5"
- u"\1\uffff\1\7\2\uffff\1\3\7\uffff\1\10"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"\1\11"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"\1\12\3\uffff\1\13"),
- DFA.unpack(u""),
- DFA.unpack(u"")
- ]
-
- # class definition for DFA #1
-
- DFA1 = DFA
- # lookup tables for DFA #2
-
- DFA2_eot = DFA.unpack(
- u"\14\uffff"
- )
-
- DFA2_eof = DFA.unpack(
- u"\14\uffff"
- )
-
- DFA2_min = DFA.unpack(
- u"\1\103\3\uffff\1\157\1\144\1\61\5\uffff"
- )
-
- DFA2_max = DFA.unpack(
- u"\1\123\3\uffff\1\157\1\144\1\65\5\uffff"
- )
-
- DFA2_accept = DFA.unpack(
- u"\1\uffff\1\1\1\2\1\3\3\uffff\1\4\1\5\1\6\1\7\1\10"
- )
-
- DFA2_special = DFA.unpack(
- u"\14\uffff"
- )
-
-
- DFA2_transition = [
- DFA.unpack(u"\1\2\10\uffff\1\3\1\4\5\uffff\1\1"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"\1\5"),
- DFA.unpack(u"\1\6"),
- DFA.unpack(u"\1\7\1\10\1\11\1\12\1\13"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"")
- ]
-
- # class definition for DFA #2
-
- DFA2 = DFA
- # lookup tables for DFA #9
-
- DFA9_eot = DFA.unpack(
- u"\1\34\3\uffff\2\34\3\uffff\1\34\3\uffff\17\34\5\uffff\22\34\1\uffff"
- u"\2\34\1\113\21\34\1\141\1\uffff\1\34\1\uffff\2\34\1\145\12\34\6"
- u"\160\2\34\1\uffff\3\34\1\uffff\10\34\1\160\1\34\1\uffff\7\34\1"
- u"\u0086\7\34\1\u008e\3\34\1\u0093\1\u0086\1\uffff\1\u0086\4\34\1"
- u"\160\1\34\1\uffff\4\34\1\uffff\4\34\1\u00a1\10\34\1\uffff\11\34"
- u"\1\u0086\3\34\1\u00b7\3\34\1\u0086\1\u00bb\2\34\1\uffff\3\34\1"
- u"\uffff\1\u0086\3\34\1\u0086\5\34\1\u0086\2\34\1\u00cb\1\u0086\1"
- u"\uffff"
- )
-
- DFA9_eof = DFA.unpack(
- u"\u00cc\uffff"
- )
-
- DFA9_min = DFA.unpack(
- u"\1\11\3\uffff\1\156\1\141\3\uffff\1\145\3\uffff\1\157\1\151\2\171"
- u"\1\145\1\151\1\141\1\154\1\165\1\153\1\150\3\157\1\166\2\uffff"
- u"\1\52\2\uffff\1\143\1\155\1\171\1\144\1\162\1\160\1\155\1\146\1"
- u"\144\1\162\1\160\1\156\1\142\1\151\1\156\1\143\1\144\1\145\1\uffff"
- u"\1\154\1\145\1\53\1\151\1\164\1\145\1\142\1\141\1\144\1\164\1\150"
- u"\1\145\1\143\1\137\1\146\1\164\1\153\1\61\1\162\1\165\1\53\1\uffff"
- u"\1\141\1\uffff\1\146\1\165\1\53\1\157\1\165\1\145\1\151\1\141\1"
- u"\162\1\164\1\163\1\164\1\162\6\53\1\162\1\144\1\uffff\1\144\1\151"
- u"\1\141\1\uffff\2\154\1\156\1\141\2\156\1\151\1\171\1\53\1\157\1"
- u"\uffff\1\151\1\145\1\137\1\145\1\154\1\163\1\164\1\53\1\154\1\165"
- u"\1\141\1\157\1\155\1\154\1\144\1\53\1\153\1\162\1\115\2\53\1\uffff"
- u"\1\53\1\155\1\164\1\156\1\142\1\53\1\145\1\uffff\1\145\1\137\1"
- u"\155\1\157\1\uffff\2\145\1\137\1\157\1\53\1\171\1\153\1\157\1\144"
- u"\1\162\1\137\1\153\1\154\1\uffff\1\163\1\141\1\145\1\144\1\163"
- u"\1\151\1\147\1\145\1\163\1\53\1\160\1\171\1\151\1\53\1\143\1\162"
- u"\1\171\2\53\1\163\1\146\1\uffff\1\137\1\157\1\163\1\uffff\1\53"
- u"\1\151\1\153\1\165\1\53\2\145\1\160\1\162\1\171\1\53\2\163\2\53"
- u"\1\uffff"
- )
-
- DFA9_max = DFA.unpack(
- u"\1\175\3\uffff\1\156\1\141\3\uffff\1\145\3\uffff\1\157\1\151\2"
- u"\171\1\145\1\151\1\141\1\154\1\165\1\153\1\150\3\157\1\166\2\uffff"
- u"\1\57\2\uffff\1\143\1\155\1\171\1\144\1\162\1\160\1\155\1\146\1"
- u"\144\1\162\1\164\1\156\1\142\1\151\1\156\1\143\1\144\1\145\1\uffff"
- u"\1\154\1\145\1\172\1\151\1\164\1\145\1\142\1\141\1\144\1\164\1"
- u"\150\1\145\1\143\1\137\1\146\1\164\1\153\1\65\1\162\1\165\1\172"
- u"\1\uffff\1\141\1\uffff\1\146\1\165\1\172\1\157\1\165\1\145\1\151"
- u"\1\141\1\162\1\164\1\163\1\164\1\162\6\172\1\162\1\144\1\uffff"
- u"\1\144\1\151\1\141\1\uffff\2\154\1\156\1\141\2\156\1\151\1\171"
- u"\1\172\1\157\1\uffff\1\151\1\145\1\137\1\145\1\154\1\163\1\164"
- u"\1\172\1\154\1\165\1\141\1\157\1\155\1\154\1\144\1\172\1\153\1"
- u"\162\1\137\2\172\1\uffff\1\172\1\155\1\164\1\156\1\142\1\172\1"
- u"\145\1\uffff\1\145\1\137\1\155\1\157\1\uffff\2\145\1\137\1\157"
- u"\1\172\1\171\1\155\1\157\1\144\1\162\1\137\1\153\1\154\1\uffff"
- u"\1\163\1\141\1\145\1\144\1\163\1\151\1\147\1\145\1\163\1\172\1"
- u"\160\1\171\1\151\1\172\1\143\1\162\1\171\2\172\1\163\1\146\1\uffff"
- u"\1\137\1\157\1\163\1\uffff\1\172\1\151\1\153\1\165\1\172\2\145"
- u"\1\160\1\162\1\171\1\172\2\163\2\172\1\uffff"
- )
-
- DFA9_accept = DFA.unpack(
- u"\1\uffff\1\1\1\2\1\3\2\uffff\1\6\1\7\1\10\1\uffff\1\13\1\14\1\15"
- u"\17\uffff\1\26\1\27\1\uffff\1\31\1\32\22\uffff\1\30\25\uffff\1"
- u"\11\1\uffff\1\12\25\uffff\1\5\3\uffff\1\20\12\uffff\1\24\25\uffff"
- u"\1\23\7\uffff\1\4\4\uffff\1\21\15\uffff\1\25\25\uffff\1\22\3\uffff"
- u"\1\16\17\uffff\1\17"
- )
-
- DFA9_special = DFA.unpack(
- u"\u00cc\uffff"
- )
-
-
- DFA9_transition = [
- DFA.unpack(u"\2\35\1\uffff\2\35\22\uffff\1\35\1\uffff\1\40\1\37\10"
- u"\uffff\1\14\2\uffff\1\36\13\uffff\1\3\1\12\1\10\1\13\4\uffff\1"
- u"\30\10\uffff\1\31\1\32\5\uffff\1\27\7\uffff\1\6\1\uffff\1\7\3\uffff"
- u"\1\24\2\uffff\1\21\1\uffff\1\25\1\uffff\1\22\1\4\1\uffff\1\11\1"
- u"\uffff\1\15\1\5\1\33\1\23\2\uffff\1\20\1\17\1\uffff\1\16\1\uffff"
- u"\1\26\2\uffff\1\1\1\uffff\1\2"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"\1\41"),
- DFA.unpack(u"\1\42"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"\1\43"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"\1\44"),
- DFA.unpack(u"\1\45"),
- DFA.unpack(u"\1\46"),
- DFA.unpack(u"\1\47"),
- DFA.unpack(u"\1\50"),
- DFA.unpack(u"\1\51"),
- DFA.unpack(u"\1\52"),
- DFA.unpack(u"\1\53"),
- DFA.unpack(u"\1\54"),
- DFA.unpack(u"\1\55"),
- DFA.unpack(u"\1\56"),
- DFA.unpack(u"\1\57"),
- DFA.unpack(u"\1\60"),
- DFA.unpack(u"\1\61"),
- DFA.unpack(u"\1\62"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"\1\63\4\uffff\1\37"),
- DFA.unpack(u""),
- DFA.unpack(u""),
- DFA.unpack(u"\1\64"),
- DFA.unpack(u"\1\65"),
- DFA.unpack(u"\1\66"),
- DFA.unpack(u"\1\67"),
- DFA.unpack(u"\1\70"),
- DFA.unpack(u"\1\71"),
- DFA.unpack(u"\1\72"),
- DFA.unpack(u"\1\73"),
- DFA.unpack(u"\1\74"),
- DFA.unpack(u"\1\75"),
- DFA.unpack(u"\1\76\3\uffff\1\77"),
- DFA.unpack(u"\1\100"),
- DFA.unpack(u"\1\101"),
- DFA.unpack(u"\1\102"),
- DFA.unpack(u"\1\103"),
- DFA.unpack(u"\1\104"),
- DFA.unpack(u"\1\105"),
- DFA.unpack(u"\1\106"),
- DFA.unpack(u""),
- DFA.unpack(u"\1\107"),
- DFA.unpack(u"\1\110"),
- DFA.unpack(u"\1\34\1\uffff\1\34\1\111\1\uffff\12\34\7\uffff\32\34"
- u"\4\uffff\1\34\1\uffff\17\34\1\112\12\34"),
- DFA.unpack(u"\1\114"),
- DFA.unpack(u"\1\115"),
- DFA.unpack(u"\1\116"),
- DFA.unpack(u"\1\117"),
- DFA.unpack(u"\1\120"),
- DFA.unpack(u"\1\121"),
- DFA.unpack(u"\1\122"),
- DFA.unpack(u"\1\123"),
- DFA.unpack(u"\1\124"),
- DFA.unpack(u"\1\125"),
- DFA.unpack(u"\1\126"),
- DFA.unpack(u"\1\127"),
- DFA.unpack(u"\1\130"),
- DFA.unpack(u"\1\131"),
- DFA.unpack(u"\1\132\1\133\1\134\1\135\1\136"),
- DFA.unpack(u"\1\137"),
- DFA.unpack(u"\1\140"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),
- DFA.unpack(u""),
- DFA.unpack(u"\1\142"),
- DFA.unpack(u""),
- DFA.unpack(u"\1\143"),
- DFA.unpack(u"\1\144"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),
- DFA.unpack(u"\1\146"),
- DFA.unpack(u"\1\147"),
- DFA.unpack(u"\1\150"),
- DFA.unpack(u"\1\151"),
- DFA.unpack(u"\1\152"),
- DFA.unpack(u"\1\153"),
- DFA.unpack(u"\1\154"),
- DFA.unpack(u"\1\155"),
- DFA.unpack(u"\1\156"),
- DFA.unpack(u"\1\157"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),
- DFA.unpack(u"\1\161"),
- DFA.unpack(u"\1\162"),
- DFA.unpack(u""),
- DFA.unpack(u"\1\163"),
- DFA.unpack(u"\1\164"),
- DFA.unpack(u"\1\165"),
- DFA.unpack(u""),
- DFA.unpack(u"\1\166"),
- DFA.unpack(u"\1\167"),
- DFA.unpack(u"\1\170"),
- DFA.unpack(u"\1\171"),
- DFA.unpack(u"\1\172"),
- DFA.unpack(u"\1\173"),
- DFA.unpack(u"\1\174"),
- DFA.unpack(u"\1\175"),
- DFA.unpack(u"\1\34\1\uffff\1\34\2\uffff\12\34\7\uffff\32\34\4\uffff"
- u"\1\34\1\uffff\32\34"),