From c475de1c0b424d833840b3ba3edd6a96091a0b66 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Sun, 8 Jun 2014 15:06:11 -0400 Subject: [PATCH] Finish new language spec. --- bitshift/languages.py | 19 +++- bitshift/languages.yml | 247 +++++++++++++++++++++++++++++++++++++++++++- bitshift/parser/__init__.py | 7 +- 3 files changed, 263 insertions(+), 10 deletions(-) diff --git a/bitshift/languages.py b/bitshift/languages.py index c5f9038..d6395bb 100644 --- a/bitshift/languages.py +++ b/bitshift/languages.py @@ -2,5 +2,20 @@ from os import path import yaml -with open(path.join(path.dirname(__file__), "languages.yml")) as lang_yaml: - LANGS = [lang for lang in yaml.load(lang_yaml)["languages"]] +__all__ = ["LANGS", "LANGS_ALL"] + +def _load_langs(): + filename = path.join(path.dirname(__file__), "languages.yml") + with open(filename) as fp: + data = yaml.load(fp)["languages"] + langs = [it.keys()[0] if isinstance(it, dict) else it for it in data] + all_langs = {} + for i, lang in enumerate(data): + if isinstance(lang, dict): + for val in lang.values()[0]: + all_langs[val] = i + else: + all_langs[lang] = i + return langs, all_langs + +LANGS, LANGS_ALL = _load_langs() diff --git a/bitshift/languages.yml b/bitshift/languages.yml index ac272cb..cd29c7e 100644 --- a/bitshift/languages.yml +++ b/bitshift/languages.yml @@ -8,9 +8,13 @@ languages: - Python 3.0 Traceback - Python console session - Python Traceback + - NumPy + - PyPy Log - C - Java - - Ruby + - Ruby: + - Ruby + - Ruby irb session # Without parsers: - ABAP @@ -29,13 +33,18 @@ languages: - ANTLR With Python Target - ANTLR With Ruby Target - Ada - - Agda + - Agda: + - Agda + - Literate Agda - Alloy - AmbientTalk - ApacheConf - AppleScript - AspectJ + - aspx-cs + - aspx-vb - Asymptote + - autohotkey - AutoIt - Awk - BBCode @@ -53,7 +62,32 @@ languages: - Bro - "C#" - C++ - + - ca65 + - CBM BASIC V2 + - Ceylon + - CFEngine3 + - cfstatement + - ChaiScript + - Chapel + - Cheetah + - Cirru + - Clay + - Clojure: + - Clojure + - ClojureScript + - CMake + - COBOL: + - COBOL + - COBOLFree + - CoffeeScript + - Coldfusion CFC + - Coldfusion HTML + - Common Lisp + - Coq + - Croc + - Cryptol: + - Cryptol + - Literate Cryptol - CSS: - CSS - CSS+Django/Jinja @@ -65,9 +99,68 @@ languages: - CSS+PHP - CSS+Ruby - CSS+Smarty + - CUDA + - Cypher + - Cython + - D + - Darcs Patch + - Dart + - Debian Control file + - Debian Sourcelist + - Delphi + - dg + - Diff + - Django/Jinja + - Docker + - DTD + - Duel + - Dylan: + - Dylan + - Dylan session + - DylanLID + - EBNF + - eC + - ECL + - Eiffel + - Elixir: + - Elixir + - Elixir iex session + - Embedded Ragel + - ERB: + - ERB + - RHTML + - Erlang: + - Erlang + - Erlang erl session + - Evoque + - Factor + - Fancy + - Fantom + - Felix + - Fortran + - FoxPro + - FSharp + - GAP + - GAS + - Genshi + - Genshi Text + - Gettext Catalog + - Gherkin + - GLSL + - Gnuplot + - Go + - Golo + - GoodData-CL + - Gosu + - Gosu Template + - Groff + - Groovy + - Haml + - Handlebars - Haskell: - Haskell - Literate Haskell + - Haxe - HTML: - HTML - HTML+Cheetah @@ -81,6 +174,25 @@ languages: - HTML+PHP - HTML+Smarty - HTML+Velocity + - Hxml + - Hy + - Hybris + - IDL + - Idris: + - Idris + - Literate Idris + - Igor + - Inform 6: + - Inform 6 + - Inform 6 template + - Inform 7 + - INI + - Io + - Ioke + - Jade + - JAGS + - Jasmin + - Java Server Page - JavaScript: - JavaScript - JavaScript+Cheetah @@ -93,15 +205,80 @@ languages: - JavaScript+PHP - JavaScript+Ruby - JavaScript+Smarty + - JSON - Julia: - Julia - Julia console + - Kal + - Kconfig + - Koka + - Kotlin + - Lasso + - Lighttpd configuration file + - Limbo + - LiveScript + - LLVM + - Logos + - Logtalk + - LSL + - Lua - Makefile - Makefile - Base Makefile + - Mako + - MAQL + - Mask + - Mason + - Mathematica + - Matlab: + - Matlab + - Matlab session + - MiniD + - Modelica + - Modula-2 + - Monkey + - MOOCode + - MoonScript + - MQL + - Mscgen + - MuPAD + - MXML + - Myghty + - NASM + - Nemerle + - nesC + - NewLisp + - Newspeak + - Nginx configuration file + - Nimrod + - Nix + - NSIS - Objective-C - Objective-C++ - Objective-J + - OCaml + - Octave + - Ooc + - Opa + - OpenEdge ABL + - Pan + - Pawn + - Perl: + - Perl + - Perl6 + - PHP + - Pig + - Pike + - PostScript + - POVRay + - PowerShell + - Prolog + - Properties + - Protocol Buffer + - Puppet + - QBasic + - QML + - Racket - Ragel: - Ragel - Ragel in C Host @@ -110,9 +287,65 @@ languages: - Ragel in Java Host - Ragel in Objective C Host - Ragel in Ruby Host + - RConsole + - Rd + - REBOL + - Red + - Redcode + - reg + - reStructuredText + - Rexx + - RobotFramework + - RPMSpec + - RQL + - RSL + - Rust + - S - Sass: - Sass - SCSS + - Scala + - Scalate Server Page + - Scaml + - Scheme + - Scilab + - Shell Session + - Slim + - Smali + - Smalltalk + - Smarty + - Snobol + - SourcePawn + - SPARQL + - SQL: + - SQL + - MySQL + - PL/pgSQL + - PostgreSQL console (psql) + - PostgreSQL SQL dialect + - sqlite3con + + - SquidConf + - Stan + - Standard ML + - SWIG + - systemverilog + - Tcl + - Tcsh + - Tea + - TeX + - Todotxt + - Treetop + - TypeScript + - UrbiScript + - Vala + - VB.net + - VCTreeStatus + - Velocity + - verilog + - VGL + - vhdl + - VimL - XML: - XML - XML+Cheetah @@ -126,4 +359,10 @@ languages: - XML+Ruby - XML+Smarty - XML+Velocity - - YAML + - XQuery + - XSLT + - Xtend + - YAML: + - YAML + - YAML+Jinja + - Zephir diff --git a/bitshift/parser/__init__.py b/bitshift/parser/__init__.py index 6d4229b..88dc03e 100644 --- a/bitshift/parser/__init__.py +++ b/bitshift/parser/__init__.py @@ -7,7 +7,7 @@ import subprocess from os import path from pygments import lexers as pgl, util -from ..languages import LANGS +from ..languages import LANGS, LANGS_ALL from .python import parse_py __all__ = ["parse", "UnsupportedFileError", "start_parse_servers"] @@ -41,11 +41,10 @@ def _lang(codelet): lex = pgl.guess_lexer_for_filename(codelet.filename, codelet.code) else: lex = pgl.guess_lexer(codelet.code) - except util.ClassNotFound: + return LANGS_ALL[lex.name] + except (util.ClassNotFound, KeyError): raise UnsupportedFileError(codelet.filename) - return LANGS.index(lex.name) - def _recv_data(server_socket): """ Private function to read string response from a server. It reads a certain