diff options
author | Georg Brandl <georg@python.org> | 2012-08-19 10:02:42 +0200 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2012-08-19 10:02:42 +0200 |
commit | bdcbecd4a7e4ce29b1897b862fca2c73888835d0 (patch) | |
tree | 74ddbeb9ad2c5ed54dfed7ff1cbe030afef47a3c | |
parent | 58e89ae4fed19d75b50701d4a7619da1a8966af8 (diff) | |
parent | 7fd6d17d2e6965f2a42b43fe95b156ad932c8b32 (diff) | |
download | pygments-bdcbecd4a7e4ce29b1897b862fca2c73888835d0.tar.gz |
Merged in zythmer/pygments-main (pull request #80)
25 files changed, 8274 insertions, 193 deletions
@@ -9,6 +9,7 @@ Other contributors, listed alphabetically, are: * Kumar Appaiah -- Debian control lexer * Ali Afshar -- image formatter * Andreas Amann -- AppleScript lexer +* Jeffrey Arnold -- R/S lexer, BUGS lexers * Jeremy Ashkenas -- CoffeeScript lexer * Stefan Matthias Aust -- Smalltalk lexer * Ben Bangert -- Mako lexers @@ -27,6 +28,7 @@ Other contributors, listed alphabetically, are: * Pete Curry -- bugfixes * Owen Durni -- haXe lexer * Nick Efford -- Python 3 lexer +* Sven Efftinge -- Xtend lexer * Artem Egorkine -- terminal256 formatter * James H. Fisher -- PostScript lexer * Carlos Galdino -- Elixir and Elixir Console lexers @@ -52,6 +54,7 @@ Other contributors, listed alphabetically, are: * Brian R. Jackson -- Tea lexer * Dennis Kaarsemaker -- sources.list lexer * Igor Kalnitsky -- vhdl lexer +* Eric Knibbe -- Lasso lexer * Adam Koprowski -- Opa lexer * Benjamin Kowarsch -- Modula-2 lexer * Marek Kubica -- Scheme lexer @@ -67,8 +70,10 @@ Other contributors, listed alphabetically, are: * Stephen McKamey -- Duel/JBST lexer * Brian McKenna -- F# lexer * Lukas Meuser -- BBCode formatter, Lua lexer +* Paul Miller -- LiveScript lexer * Hong Minhee -- HTTP lexer * Michael Mior -- Awk lexer +* Jon Morton -- Rust lexer * Paulo Moura -- Logtalk lexer * Mher Movsisyan -- DTD lexer * Ana Nelson -- Ragel, ANTLR, R console lexers @@ -82,6 +87,7 @@ Other contributors, listed alphabetically, are: * Benjamin Peterson -- Test suite refactoring * Dominik Picheta -- Nimrod lexer * Clément Prévost -- UrbiScript lexer +* Kashif Rasul -- CUDA lexer * Justin Reidy -- MXML lexer * Norman Richards -- JSON lexer * Lubomir Rintel -- GoodData MAQL and CL lexers @@ -11,9 +11,18 @@ Version 1.6 - Lexers added: * Julia (PR#61) + * Croc (new name for MiniD) + * LiveScript (PR#84) + * Lasso (PR#95) + * BUGS-like languages (PR#89) + * Rust (PR#67) + * CUDA (PR#75) + * Xtend (PR#68) - Fix Template Haskell highlighting (PR#63) +- Fix some S/R lexer errors (PR#91) + Version 1.5 ----------- diff --git a/external/lasso-builtins-generator-9.lasso b/external/lasso-builtins-generator-9.lasso new file mode 100755 index 00000000..bea8b2ab --- /dev/null +++ b/external/lasso-builtins-generator-9.lasso @@ -0,0 +1,121 @@ +#!/usr/bin/lasso9 + +/* + Builtins Generator for Lasso 9 + + This is the shell script that was used to extract Lasso 9's built-in keywords + and generate most of the _lassobuiltins.py file. When run, it creates a file + named "lassobuiltins-9.py" containing the types, traits, and methods of the + currently-installed version of Lasso 9. + + A partial list of keywords in Lasso 8 can be generated with this code: + + <?LassoScript + local('l8tags' = list); + iterate(tags_list, local('i')); + #l8tags->insert(string_removeleading(#i, -pattern='_global_')); + /iterate; + #l8tags->sort; + iterate(#l8tags, local('i')); + string_lowercase(#i)+"<br>"; + /iterate; + +*/ + +output("This output statement is required for a complete list of methods.") +local(f) = file("lassobuiltins-9.py") +#f->doWithClose => { + +#f->openWrite +#f->writeString('# -*- coding: utf-8 -*- +""" + pygments.lexers._lassobuiltins + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Built-in Lasso types, traits, and methods. +""" + +') + +lcapi_loadModules + +// Load all of the libraries from builtins and lassoserver +// This forces all possible available types and methods to be registered +local(srcs = + tie( + dir(sys_masterHomePath + 'LassoLibraries/builtins/')->eachFilePath, + dir(sys_masterHomePath + 'LassoLibraries/lassoserver/')->eachFilePath + ) +) + +with topLevelDir in #srcs +where !#topLevelDir->lastComponent->beginsWith('.') +do protect => { + handle_error => { + stdoutnl('Unable to load: ' + #topLevelDir + ' ' + error_msg) + } + library_thread_loader->loadLibrary(#topLevelDir) + stdoutnl('Loaded: ' + #topLevelDir) +} + +local( + typesList = list(), + traitsList = list(), + methodsList = list() +) + +// unbound methods +with method in sys_listUnboundMethods +where !#method->methodName->asString->endsWith('=') +where #method->methodName->asString->isalpha(1) +where #methodsList !>> #method->methodName->asString +do #methodsList->insert(#method->methodName->asString) + +// traits +with trait in sys_listTraits +where !#trait->asString->beginsWith('$') +where #traitsList !>> #trait->asString +do { + #traitsList->insert(#trait->asString) + with tmethod in tie(#trait->getType->provides, #trait->getType->requires) + where !#tmethod->methodName->asString->endsWith('=') + where #tmethod->methodName->asString->isalpha(1) + where #methodsList !>> #tmethod->methodName->asString + do #methodsList->insert(#tmethod->methodName->asString) +} + +// types +with type in sys_listTypes +where #typesList !>> #type->asString +do { + #typesList->insert(#type->asString) + with tmethod in #type->getType->listMethods + where !#tmethod->methodName->asString->endsWith('=') + where #tmethod->methodName->asString->isalpha(1) + where #methodsList !>> #tmethod->methodName->asString + do #methodsList->insert(#tmethod->methodName->asString) +} + +#f->writeString("BUILTINS = { + 'Types': [ +") +with t in #typesList +do #f->writeString(" '"+string_lowercase(#t)+"',\n") + +#f->writeString(" ], + 'Traits': [ +") +with t in #traitsList +do #f->writeString(" '"+string_lowercase(#t)+"',\n") + +#f->writeString(" ], + 'Methods': [ +") +with t in #methodsList +do #f->writeString(" '"+string_lowercase(#t)+"',\n") + +#f->writeString(" ], +} +") + +} diff --git a/pygments/lexers/_lassobuiltins.py b/pygments/lexers/_lassobuiltins.py new file mode 100644 index 00000000..e609daf7 --- /dev/null +++ b/pygments/lexers/_lassobuiltins.py @@ -0,0 +1,5413 @@ +# -*- coding: utf-8 -*- +""" + pygments.lexers._lassobuiltins + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Built-in Lasso types, traits, and methods. +""" + +BUILTINS = { + 'Types': [ + 'null', + 'void', + 'tag', + 'trait', + 'integer', + 'decimal', + 'boolean', + 'capture', + 'string', + 'bytes', + 'keyword', + 'custom', + 'staticarray', + 'signature', + 'memberstream', + 'dsinfo', + 'sourcefile', + 'array', + 'pair', + 'opaque', + 'filedesc', + 'dirdesc', + 'locale', + 'ucal', + 'xml_domimplementation', + 'xml_node', + 'xml_characterdata', + 'xml_document', + 'xml_element', + 'xml_attr', + 'xml_text', + 'xml_cdatasection', + 'xml_entityreference', + 'xml_entity', + 'xml_processinginstruction', + 'xml_comment', + 'xml_documenttype', + 'xml_documentfragment', + 'xml_notation', + 'xml_nodelist', + 'xml_namednodemap', + 'xml_namednodemap_ht', + 'xml_namednodemap_attr', + 'xmlstream', + 'sqlite3', + 'sqlite3_stmt', + 'mime_reader', + 'curltoken', + 'regexp', + 'zip_impl', + 'zip_file_impl', + 'library_thread_loader_thread$', + 'library_thread_loader', + 'generateforeachunkeyed', + 'generateforeachkeyed', + 'eacher', + 'queriable_where', + 'queriable_select', + 'queriable_selectmany', + 'queriable_groupby', + 'queriable_join', + 'queriable_groupjoin', + 'queriable_orderby', + 'queriable_orderbydescending', + 'queriable_thenby', + 'queriable_thenbydescending', + 'queriable_skip', + 'queriable_take', + 'queriable_grouping', + 'generateseries', + 'tie', + 'pairup', + 'delve', + 'repeat', + 'pair_compare', + 'serialization_object_identity_compare', + 'serialization_element', + 'serialization_writer_standin', + 'serialization_writer_ref', + 'serialization_writer', + 'serialization_reader', + 'tree_nullnode', + 'tree_node', + 'tree_base', + 'map_node', + 'map', + 'file', + 'dir', + 'magick_image', + 'ldap', + 'os_process', + 'java_jnienv', + 'jobject', + 'jmethodid', + 'jfieldid', + 'database_registry', + 'sqlite_db', + 'sqlite_results', + 'sqlite_currentrow', + 'sqlite_table', + 'sqlite_column', + 'curl', + 'date', + 'debugging_stack', + 'dbgp_server', + 'dbgp_packet', + 'duration', + 'inline_type', + 'json_literal', + 'json_object', + 'list_node', + 'list', + 'jchar', + 'jchararray', + 'jbyte', + 'jbytearray', + 'jfloat', + 'jint', + 'jshort', + 'currency', + 'scientific', + 'percent', + 'dateandtime', + 'timeonly', + 'net_tcp', + 'net_tcpssl', + 'net_named_pipe', + 'net_udppacket', + 'net_udp', + 'pdf_typebase', + 'pdf_doc', + 'pdf_color', + 'pdf_barcode', + 'pdf_font', + 'pdf_image', + 'pdf_list', + 'pdf_read', + 'pdf_table', + 'pdf_text', + 'pdf_hyphenator', + 'pdf_chunk', + 'pdf_phrase', + 'pdf_paragraph', + 'queue', + 'set', + 'sys_process', + 'worker_pool', + 'zip_file', + 'zip', + 'cache_server_element', + 'cache_server', + 'dns_response', + 'component_render_state', + 'component', + 'component_container', + 'document_base', + 'document_body', + 'document_header', + 'text_document', + 'data_document', + 'email_compose', + 'email_pop', + 'email_parse', + 'email_queue_impl_base', + 'email_stage_impl_base', + 'fcgi_record', + 'web_request_impl', + 'fcgi_request', + 'include_cache_thread$', + 'include_cache', + 'atbegin_thread$', + 'atbegin', + 'fastcgi_each_fcgi_param', + 'fastcgi_server', + 'filemaker_datasource', + 'http_document', + 'http_document_header', + 'http_header_field', + 'html_document_head', + 'html_document_body', + 'raw_document_body', + 'bytes_document_body', + 'html_attr', + 'html_atomic_element', + 'html_container_element', + 'http_error', + 'html_script', + 'html_text', + 'html_raw', + 'html_binary', + 'html_json', + 'html_cdata', + 'html_eol', + 'html_div', + 'html_span', + 'html_br', + 'html_hr', + 'html_h1', + 'html_h2', + 'html_h3', + 'html_h4', + 'html_h5', + 'html_h6', + 'html_meta', + 'html_link', + 'html_object', + 'html_style', + 'html_base', + 'html_table', + 'html_tr', + 'html_td', + 'html_th', + 'html_img', + 'html_form', + 'html_fieldset', + 'html_legend', + 'html_input', + 'html_label', + 'html_option', + 'html_select', + 'http_server_web_connection', + 'http_server', + 'http_server_connection_handler', + 'image', + 'lassoapp_installer', + 'lassoapp_content_rep_halt', + 'lassoapp_dirsrc_fileresource', + 'lassoapp_dirsrc_appsource', + 'lassoapp_livesrc_fileresource', + 'lassoapp_livesrc_appsource', + 'lassoapp_long_expiring_bytes', + 'lassoapp_zip_file_server_thread$', + 'lassoapp_zip_file_server', + 'lassoapp_zipsrc_fileresource', + 'lassoapp_zipsrc_appsource', + 'lassoapp_compiledsrc_fileresource', + 'lassoapp_compiledsrc_appsource', + 'lassoapp_manualsrc_appsource', + 'log_impl_base', + 'portal_impl', + 'security_registry', + 'memory_session_driver_impl_entry', + 'memory_session_driver_impl', + 'sqlite_session_driver_impl_entry', + 'sqlite_session_driver_impl', + 'mysql_session_driver_impl', + 'odbc_session_driver_impl', + 'session_delete_expired_thread_thread$', + 'session_delete_expired_thread', + 'email_smtp', + 'client_address', + 'client_ip', + 'web_node_base', + 'web_node_root', + 'web_node_content_representation_xhr_container', + 'web_node_content_representation_html_specialized', + 'web_node_content_representation_css_specialized', + 'web_node_content_representation_js_specialized', + 'web_node_echo', + 'web_error_atend', + 'web_response_impl', + 'web_router' + ], + 'Traits': [ + 'trait_asstring', + 'any', + 'trait_generator', + 'trait_decompose_assignment', + 'trait_foreach', + 'trait_generatorcentric', + 'trait_foreachtextelement', + 'trait_finite', + 'trait_finiteforeach', + 'trait_keyed', + 'trait_keyedfinite', + 'trait_keyedforeach', + 'trait_frontended', + 'trait_backended', + 'trait_doubleended', + 'trait_positionallykeyed', + 'trait_expandable', + 'trait_frontexpandable', + 'trait_backexpandable', + 'trait_contractible', + 'trait_frontcontractible', + 'trait_backcontractible', + 'trait_fullymutable', + 'trait_keyedmutable', + 'trait_endedfullymutable', + 'trait_setoperations', + 'trait_searchable', + 'trait_positionallysearchable', + 'trait_pathcomponents', + 'trait_readbytes', + 'trait_writebytes', + 'trait_setencoding', + 'trait_readstring', + 'trait_writestring', + 'trait_hashable', + 'trait_each_sub', + 'trait_stack', + 'trait_list', + 'trait_array', + 'trait_map', + 'trait_close', + 'trait_file', + 'trait_scalar', + 'trait_queriablelambda', + 'trait_queriable', + 'queriable_asstring', + 'trait_serializable', + 'trait_treenode', + 'trait_json_serialize', + 'formattingbase', + 'trait_net', + 'trait_xml_elementcompat', + 'trait_xml_nodecompat', + 'web_connection', + 'html_element_coreattrs', + 'html_element_i18nattrs', + 'html_element_eventsattrs', + 'html_attributed', + 'lassoapp_resource', + 'lassoapp_source', + 'lassoapp_capabilities', + 'session_driver', + 'web_node_content_json_specialized', + 'web_node', + 'web_node_container', + 'web_node_content_representation', + 'web_node_content', + 'web_node_content_document', + 'web_node_postable', + 'web_node_content_html_specialized', + 'web_node_content_css_specialized', + 'web_node_content_js_specialized' + ], + 'Methods': [ + 'fail_now', + 'staticarray', + 'integer', + 'decimal', + 'string', + 'bytes', + 'keyword', + 'signature', + 'register', + 'register_thread', + 'escape_tag', + 'handle', + 'handle_failure', + 'protect_now', + 'threadvar_get', + 'threadvar_set', + 'threadvar_set_asrt', + 'threadvar_find', + 'abort_now', + 'abort_clear', + 'failure_clear', + 'var_keys', + 'var_values', + 'null', + 'trait', + 'staticarray_join', + 'suspend', + 'main_thread_only', + 'split_thread', + 'capture_nearestloopcount', + 'capture_nearestloopcontinue', + 'capture_nearestloopabort', + 'pair', + 'io_file_o_rdonly', + 'io_file_o_wronly', + 'io_file_o_rdwr', + 'io_file_o_nonblock', + 'io_file_o_sync', + 'io_file_o_shlock', + 'io_file_o_exlock', + 'io_file_o_async', + 'io_file_o_fsync', + 'io_file_o_nofollow', + 'io_file_s_irwxu', + 'io_file_s_irusr', + 'io_file_s_iwusr', + 'io_file_s_ixusr', + 'io_file_s_irwxg', + 'io_file_s_irgrp', + 'io_file_s_iwgrp', + 'io_file_s_ixgrp', + 'io_file_s_irwxo', + 'io_file_s_iroth', + 'io_file_s_iwoth', + 'io_file_s_ixoth', + 'io_file_s_isuid', + 'io_file_s_isgid', + 'io_file_s_isvtx', + 'io_file_s_ifmt', + 'io_file_s_ifchr', + 'io_file_s_ifdir', + 'io_file_s_ifreg', + 'io_file_o_append', + 'io_file_o_creat', + 'io_file_o_trunc', + 'io_file_o_excl', + 'io_file_seek_set', + 'io_file_seek_cur', + 'io_file_seek_end', + 'io_file_s_ififo', + 'io_file_s_ifblk', + 'io_file_s_iflnk', + 'io_file_s_ifsock', + 'io_net_shut_rd', + 'io_net_shut_wr', + 'io_net_shut_rdwr', + 'io_net_sock_stream', + 'io_net_sock_dgram', + 'io_net_sock_raw', + 'io_net_sock_rdm', + 'io_net_sock_seqpacket', + 'io_net_so_debug', + 'io_net_so_acceptconn', + 'io_net_so_reuseaddr', + 'io_net_so_keepalive', + 'io_net_so_dontroute', + 'io_net_so_broadcast', + 'io_net_so_useloopback', + 'io_net_so_linger', + 'io_net_so_oobinline', + 'io_net_so_timestamp', + 'io_net_so_sndbuf', + 'io_net_so_rcvbuf', + 'io_net_so_sndlowat', + 'io_net_so_rcvlowat', + 'io_net_so_sndtimeo', + 'io_net_so_rcvtimeo', + 'io_net_so_error', + 'io_net_so_type', + 'io_net_sol_socket', + 'io_net_af_unix', + 'io_net_af_inet', + 'io_net_af_inet6', + 'io_net_ipproto_ip', + 'io_net_ipproto_udp', + 'io_net_msg_peek', + 'io_net_msg_oob', + 'io_net_msg_waitall', + 'io_file_fioclex', + 'io_file_fionclex', + 'io_file_fionread', + 'io_file_fionbio', + 'io_file_fioasync', + 'io_file_fiosetown', + 'io_file_fiogetown', + 'io_file_fiodtype', + 'io_file_f_dupfd', + 'io_file_f_getfd', + 'io_file_f_setfd', + 'io_file_f_getfl', + 'io_file_f_setfl', + 'io_file_f_getlk', + 'io_file_f_setlk', + 'io_file_f_setlkw', + 'io_file_fd_cloexec', + 'io_file_f_rdlck', + 'io_file_f_unlck', + 'io_file_f_wrlck', + 'io_dir_dt_unknown', + 'io_dir_dt_fifo', + 'io_dir_dt_chr', + 'io_dir_dt_blk', + 'io_dir_dt_reg', + 'io_dir_dt_sock', + 'io_dir_dt_wht', + 'io_dir_dt_lnk', + 'io_dir_dt_dir', + 'io_file_access', + 'io_file_chdir', + 'io_file_getcwd', + 'io_file_chown', + 'io_file_lchown', + 'io_file_truncate', + 'io_file_link', + 'io_file_pipe', + 'io_file_rmdir', + 'io_file_symlink', + 'io_file_unlink', + 'io_file_remove', + 'io_file_rename', + 'io_file_tempnam', + 'io_file_mkstemp', + 'io_file_dirname', + 'io_file_realpath', + 'io_file_chmod', + 'io_file_mkdir', + 'io_file_mkfifo', + 'io_file_umask', + 'io_net_socket', + 'io_net_bind', + 'io_net_connect', + 'io_net_listen', + 'io_net_recv', + 'io_net_recvfrom', + 'io_net_accept', + 'io_net_send', + 'io_net_sendto', + 'io_net_shutdown', + 'io_net_getpeername', + 'io_net_getsockname', + 'io_net_ssl_begin', + 'io_net_ssl_end', + 'io_net_ssl_shutdown', + 'io_net_ssl_setverifylocations', + 'io_net_ssl_usecertificatechainfile', + 'io_net_ssl_useprivatekeyfile', + 'io_net_ssl_connect', + 'io_net_ssl_accept', + 'io_net_ssl_error', + 'io_net_ssl_errorstring', + 'io_net_ssl_liberrorstring', + 'io_net_ssl_funcerrorstring', + 'io_net_ssl_reasonerrorstring', + 'io_net_ssl_setconnectstate', + 'io_net_ssl_setacceptstate', + 'io_net_ssl_read', + 'io_net_ssl_write', + 'io_file_stat_size', + 'io_file_stat_mode', + 'io_file_stat_mtime', + 'io_file_stat_atime', + 'io_file_lstat_size', + 'io_file_lstat_mode', + 'io_file_lstat_mtime', + 'io_file_lstat_atime', + 'io_file_readlink', + 'io_file_lockf', + 'io_file_f_ulock', + 'io_file_f_tlock', + 'io_file_f_test', + 'dirdesc', + 'io_file_stdin', + 'io_file_stdout', + 'io_file_stderr', + 'filedesc', + 'uchar_alphabetic', + 'uchar_ascii_hex_digit', + 'uchar_bidi_control', + 'uchar_bidi_mirrored', + 'uchar_dash', + 'uchar_default_ignorable_code_point', + 'uchar_deprecated', + 'uchar_diacritic', + 'uchar_extender', + 'uchar_full_composition_exclusion', + 'uchar_grapheme_base', + 'uchar_grapheme_extend', + 'uchar_grapheme_link', + 'uchar_hex_digit', + 'uchar_hyphen', + 'uchar_id_continue', + 'uchar_ideographic', + 'uchar_ids_binary_operator', + 'uchar_ids_trinary_operator', + 'uchar_join_control', + 'uchar_logical_order_exception', + 'uchar_lowercase', + 'uchar_math', + 'uchar_noncharacter_code_point', + 'uchar_quotation_mark', + 'uchar_radical', + 'uchar_soft_dotted', + 'uchar_terminal_punctuation', + 'uchar_unified_ideograph', + 'uchar_uppercase', + 'uchar_white_space', + 'uchar_xid_continue', + 'uchar_case_sensitive', + 'uchar_s_term', + 'uchar_variation_selector', + 'uchar_nfd_inert', + 'uchar_nfkd_inert', + 'uchar_nfc_inert', + 'uchar_nfkc_inert', + 'uchar_segment_starter', + 'uchar_pattern_syntax', + 'uchar_pattern_white_space', + 'uchar_posix_alnum', + 'uchar_posix_blank', + 'uchar_posix_graph', + 'uchar_posix_print', + 'uchar_posix_xdigit', + 'uchar_bidi_class', + 'uchar_block', + 'uchar_canonical_combining_class', + 'uchar_decomposition_type', + 'uchar_east_asian_width', + 'uchar_general_category', + 'uchar_joining_group', + 'uchar_joining_type', + 'uchar_line_break', + 'uchar_numeric_type', + 'uchar_script', + 'uchar_hangul_syllable_type', + 'uchar_nfd_quick_check', + 'uchar_nfkd_quick_check', + 'uchar_nfc_quick_check', + 'uchar_nfkc_quick_check', + 'uchar_lead_canonical_combining_class', + 'uchar_trail_canonical_combining_class', + 'uchar_grapheme_cluster_break', + 'uchar_sentence_break', + 'uchar_word_break', + 'uchar_general_category_mask', + 'uchar_numeric_value', + 'uchar_age', + 'uchar_bidi_mirroring_glyph', + 'uchar_case_folding', + 'uchar_iso_comment', + 'uchar_lowercase_mapping', + 'uchar_name', + 'uchar_simple_case_folding', + 'uchar_simple_lowercase_mapping', + 'uchar_simple_titlecase_mapping', + 'uchar_simple_uppercase_mapping', + 'uchar_titlecase_mapping', + 'uchar_unicode_1_name', + 'uchar_uppercase_mapping', + 'u_wb_other', + 'u_wb_aletter', + 'u_wb_format', + 'u_wb_katakana', + 'u_wb_midletter', + 'u_wb_midnum', + 'u_wb_numeric', + 'u_wb_extendnumlet', + 'u_sb_other', + 'u_sb_aterm', + 'u_sb_close', + 'u_sb_format', + 'u_sb_lower', + 'u_sb_numeric', + 'u_sb_oletter', + 'u_sb_sep', + 'u_sb_sp', + 'u_sb_sterm', + 'u_sb_upper', + 'u_lb_unknown', + 'u_lb_ambiguous', + 'u_lb_alphabetic', + 'u_lb_break_both', + 'u_lb_break_after', + 'u_lb_break_before', + 'u_lb_mandatory_break', + 'u_lb_contingent_break', + 'u_lb_close_punctuation', + 'u_lb_combining_mark', + 'u_lb_carriage_return', + 'u_lb_exclamation', + 'u_lb_glue', + 'u_lb_hyphen', + 'u_lb_ideographic', + 'u_lb_inseparable', + 'u_lb_infix_numeric', + 'u_lb_line_feed', + 'u_lb_nonstarter', + 'u_lb_numeric', + 'u_lb_open_punctuation', + 'u_lb_postfix_numeric', + 'u_lb_prefix_numeric', + 'u_lb_quotation', + 'u_lb_complex_context', + 'u_lb_surrogate', + 'u_lb_space', + 'u_lb_break_symbols', + 'u_lb_zwspace', + 'u_lb_next_line', + 'u_lb_word_joiner', + 'u_lb_h2', + 'u_lb_h3', + 'u_lb_jl', + 'u_lb_jt', + 'u_lb_jv', + 'u_nt_none', + 'u_nt_decimal', + 'u_nt_digit', + 'u_nt_numeric', + 'locale', + 'locale_english', + 'locale_french', + 'locale_german', + 'locale_italian', + 'locale_japanese', + 'locale_korean', + 'locale_chinese', + 'locale_simplifiedchinese', + 'locale_traditionalchinese', + 'locale_france', + 'locale_germany', + 'locale_italy', + 'locale_japan', + 'locale_korea', + 'locale_china', + 'locale_prc', + 'locale_taiwan', + 'locale_uk', + 'locale_us', + 'locale_canada', + 'locale_canadafrench', + 'locale_default', + 'locale_setdefault', + 'locale_isocountries', + 'locale_isolanguages', + 'locale_availablelocales', + 'ucal_listtimezones', + 'ucal', + 'ucal_era', + 'ucal_year', + 'ucal_month', + 'ucal_weekofyear', + 'ucal_weekofmonth', + 'ucal_dayofmonth', + 'ucal_dayofyear', + 'ucal_dayofweek', + 'ucal_dayofweekinmonth', + 'ucal_ampm', + 'ucal_hour', + 'ucal_hourofday', + 'ucal_minute', + 'ucal_second', + 'ucal_millisecond', + 'ucal_zoneoffset', + 'ucal_dstoffset', + 'ucal_yearwoy', + 'ucal_dowlocal', + 'ucal_extendedyear', + 'ucal_julianday', + 'ucal_millisecondsinday', + 'ucal_lenient', + 'ucal_firstdayofweek', + 'ucal_daysinfirstweek', + 'xml_domimplementation', + 'sys_sigalrm', + 'sys_sighup', + 'sys_sigkill', + 'sys_sigpipe', + 'sys_sigquit', + 'sys_sigusr1', + 'sys_sigusr2', + 'sys_sigchld', + 'sys_sigcont', + 'sys_sigstop', + 'sys_sigtstp', + 'sys_sigttin', + 'sys_sigttou', + 'sys_sigbus', + 'sys_sigprof', + 'sys_sigsys', + 'sys_sigtrap', + 'sys_sigurg', + 'sys_sigvtalrm', + 'sys_sigxcpu', + 'sys_sigxfsz', + 'sys_wcontinued', + 'sys_wnohang', + 'sys_wuntraced', + 'sys_sigabrt', + 'sys_sigfpe', + 'sys_sigill', + 'sys_sigint', + 'sys_sigsegv', + 'sys_sigterm', + 'sys_exit', + 'sys_fork', + 'sys_kill', + 'sys_waitpid', + 'sys_getegid', + 'sys_geteuid', + 'sys_getgid', + 'sys_getlogin', + 'sys_getpid', + 'sys_getppid', + 'sys_getuid', + 'sys_setuid', + 'sys_setgid', + 'sys_setsid', + 'sys_errno', + 'sys_strerror', + 'sys_time', + 'sys_difftime', + 'sys_getpwuid', + 'sys_getpwnam', + 'sys_getgrnam', + 'sys_drand48', + 'sys_erand48', + 'sys_jrand48', + 'sys_lcong48', + 'sys_lrand48', + 'sys_mrand48', + 'sys_nrand48', + 'sys_srand48', + 'sys_random', + 'sys_srandom', + 'sys_seed48', + 'sys_rand', + 'sys_srand', + 'sys_environ', + 'sys_getenv', + 'sys_setenv', + 'sys_unsetenv', + 'sys_uname', + 'uuid_compare', + 'uuid_copy', + 'uuid_generate', + 'uuid_generate_random', + 'uuid_generate_time', + 'uuid_is_null', + 'uuid_parse', + 'uuid_unparse', + 'uuid_unparse_lower', + 'uuid_unparse_upper', + 'sys_credits', + 'sleep', + 'sys_dll_ext', + 'sys_listtypes', + 'sys_listtraits', + 'sys_listunboundmethods', + 'sys_getthreadcount', + 'sys_growheapby', + 'sys_getheapsize', + 'sys_getheapfreebytes', + 'sys_getbytessincegc', + 'sys_garbagecollect', + 'sys_clock', + 'sys_getstartclock', + 'sys_clockspersec', + 'sys_pointersize', + 'sys_loadlibrary', + 'sys_getchar', + 'sys_chroot', + 'sys_exec', + 'sys_kill_exec', + 'sys_wait_exec', + 'sys_test_exec', + 'sys_detach_exec', + 'sys_pid_exec', + 'wifexited', + 'wexitstatus', + 'wifsignaled', + 'wtermsig', + 'wifstopped', + 'wstopsig', + 'wifcontinued', + 'sys_eol', + 'sys_iswindows', + 'sys_is_windows', + 'sys_isfullpath', + 'sys_is_full_path', + 'lcapi_loadmodule', + 'lcapi_listdatasources', + 'dsinfo', + 'encrypt_blowfish', + 'decrypt_blowfish', + 'cipher_digest', + 'cipher_encrypt', + 'cipher_decrypt', + 'cipher_list', + 'cipher_keylength', + 'cipher_hmac', + 'cipher_seal', + 'cipher_open', + 'cipher_sign', + 'cipher_verify', + 'cipher_decrypt_private', + 'cipher_decrypt_public', + 'cipher_encrypt_private', + 'cipher_encrypt_public', + 'cipher_generate_key', + 'xmlstream', + 'sourcefile', + 'tag', + 'tag_exists', + 'mime_reader', + 'curl_easy_init', + 'curl_easy_duphandle', + 'curl_easy_cleanup', + 'curl_easy_getinfo', + 'curl_multi_perform', + 'curl_multi_result', + 'curl_easy_reset', + 'curl_easy_setopt', + 'curl_easy_strerror', + 'curl_getdate', + 'curl_version', + 'curl_version_info', + 'curlinfo_effective_url', + 'curlinfo_content_type', + 'curlinfo_response_code', + 'curlinfo_header_size', + 'curlinfo_request_size', + 'curlinfo_ssl_verifyresult', + 'curlinfo_filetime', + 'curlinfo_redirect_count', + 'curlinfo_http_connectcode', + 'curlinfo_httpauth_avail', + 'curlinfo_proxyauth_avail', + 'curlinfo_os_errno', + 'curlinfo_num_connects', + 'curlinfo_total_time', + 'curlinfo_namelookup_time', + 'curlinfo_connect_time', + 'curlinfo_pretransfer_time', + 'curlinfo_size_upload', + 'curlinfo_size_download', + 'curlinfo_speed_download', + 'curlinfo_speed_upload', + 'curlinfo_content_length_download', + 'curlinfo_content_length_upload', + 'curlinfo_starttransfer_time', + 'curlinfo_redirect_time', + 'curlinfo_ssl_engines', + 'curlopt_url', + 'curlopt_postfields', + 'curlopt_cainfo', + 'curlopt_capath', + 'curlopt_cookie', + 'curlopt_cookiefile', + 'curlopt_cookiejar', + 'curlopt_customrequest', + 'curlopt_egdsocket', + 'curlopt_encoding', + 'curlopt_ftp_account', + 'curlopt_ftpport', + 'curlopt_interface', + 'curlopt_krb4level', + 'curlopt_netrc_file', + 'curlopt_proxy', + 'curlopt_proxyuserpwd', + 'curlopt_random_file', + 'curlopt_range', + 'curlopt_readdata', + 'curlopt_referer', + 'curlopt_ssl_cipher_list', + 'curlopt_sslcert', + 'curlopt_sslcerttype', + 'curlopt_sslengine', + 'curlopt_sslkey', + 'curlopt_sslkeypasswd', + 'curlopt_sslkeytype', + 'curlopt_useragent', + 'curlopt_userpwd', + 'curlopt_postfieldsize', + 'curlopt_autoreferer', + 'curlopt_buffersize', + 'curlopt_connecttimeout', + 'curlopt_cookiesession', + 'curlopt_crlf', + 'curlopt_dns_use_global_cache', + 'curlopt_failonerror', + 'curlopt_filetime', + 'curlopt_followlocation', + 'curlopt_forbid_reuse', + 'curlopt_fresh_connect', + 'curlopt_ftp_create_missing_dirs', + 'curlopt_ftp_response_timeout', + 'curlopt_ftp_ssl', + 'curlopt_use_ssl', + 'curlopt_ftp_use_eprt', + 'curlopt_ftp_use_epsv', + 'curlopt_ftpappend', + 'curlopt_ftplistonly', + 'curlopt_ftpsslauth', + 'curlopt_header', + 'curlopt_http_version', + 'curlopt_httpauth', + 'curlopt_httpget', + 'curlopt_httpproxytunnel', + 'curlopt_infilesize', + 'curlopt_ipresolve', + 'curlopt_low_speed_limit', + 'curlopt_low_speed_time', + 'curlopt_maxconnects', + 'curlopt_maxfilesize', + 'curlopt_maxredirs', + 'curlopt_netrc', + 'curlopt_nobody', + 'curlopt_noprogress', + 'curlopt_port', + 'curlopt_post', + 'curlopt_proxyauth', + 'curlopt_proxyport', + 'curlopt_proxytype', + 'curlopt_put', + 'curlopt_resume_from', + 'curlopt_ssl_verifyhost', + 'curlopt_ssl_verifypeer', + 'curlopt_sslengine_default', + 'curlopt_sslversion', + 'curlopt_tcp_nodelay', + 'curlopt_timecondition', + 'curlopt_timeout', + 'curlopt_timevalue', + 'curlopt_transfertext', + 'curlopt_unrestricted_auth', + 'curlopt_upload', + 'curlopt_verbose', + 'curlopt_infilesize_large', + 'curlopt_maxfilesize_large', + 'curlopt_postfieldsize_large', + 'curlopt_resume_from_large', + 'curlopt_http200aliases', + 'curlopt_httpheader', + 'curlopt_postquote', + 'curlopt_prequote', + 'curlopt_quote', + 'curlopt_httppost', + 'curlopt_writedata', + 'curl_version_ipv6', + 'curl_version_kerberos4', + 'curl_version_ssl', + 'curl_version_libz', + 'curl_version_ntlm', + 'curl_version_gssnegotiate', + 'curl_version_debug', + 'curl_version_asynchdns', + 'curl_version_spnego', + 'curl_version_largefile', + 'curl_version_idn', + 'curl_netrc_ignored', + 'curl_netrc_optional', + 'curl_netrc_required', + 'curl_http_version_none', + 'curl_http_version_1_0', + 'curl_http_version_1_1', + 'curl_ipresolve_whatever', + 'curl_ipresolve_v4', + 'curl_ipresolve_v6', + 'curlftpssl_none', + 'curlftpssl_try', + 'curlftpssl_control', + 'curlftpssl_all', + 'curlftpssl_last', + 'curlftpauth_default', + 'curlftpauth_ssl', + 'curlftpauth_tls', + 'curlauth_none', + 'curlauth_basic', + 'curlauth_digest', + 'curlauth_gssnegotiate', + 'curlauth_ntlm', + 'curlauth_any', + 'curlauth_anysafe', + 'curlproxy_http', + 'curlproxy_socks4', + 'curlproxy_socks5', + 'curle_ok', + 'curle_unsupported_protocol', + 'curle_failed_init', + 'curle_url_malformat', + 'curle_url_malformat_user', + 'curle_couldnt_resolve_proxy', + 'curle_couldnt_resolve_host', + 'curle_couldnt_connect', + 'curle_ftp_weird_server_reply', + 'curle_ftp_access_denied', + 'curle_ftp_user_password_incorrect', + 'curle_ftp_weird_pass_reply', + 'curle_ftp_weird_user_reply', + 'curle_ftp_weird_pasv_reply', + 'curle_ftp_weird_227_format', + 'curle_ftp_cant_get_host', + 'curle_ftp_cant_reconnect', + 'curle_ftp_couldnt_set_binary', + 'curle_partial_file', + 'curle_ftp_couldnt_retr_file', + 'curle_ftp_write_error', + 'curle_ftp_quote_error', + 'curle_http_returned_error', + 'curle_write_error', + 'curle_malformat_user', + 'curle_read_error', + 'curle_out_of_memory', + 'curle_operation_timeouted', + 'curle_ftp_couldnt_set_ascii', + 'curle_ftp_port_failed', + 'curle_ftp_couldnt_use_rest', + 'curle_ftp_couldnt_get_size', + 'curle_http_range_error', + 'curle_http_post_error', + 'curle_ssl_connect_error', + 'curle_bad_download_resume', + 'curle_file_couldnt_read_file', + 'curle_ldap_cannot_bind', + 'curle_ldap_search_failed', + 'curle_library_not_found', + 'curle_function_not_found', + 'curle_aborted_by_callback', + 'curle_bad_function_argument', + 'curle_bad_calling_order', + 'curle_interface_failed', + 'curle_bad_password_entered', + 'curle_too_many_redirects', + 'curle_unknown_telnet_option', + 'curle_telnet_option_syntax', + 'curle_obsolete', + 'curle_ssl_peer_certificate', + 'curle_got_nothing', + 'curle_ssl_engine_notfound', + 'curle_ssl_engine_setfailed', + 'curle_send_error', + 'curle_recv_error', + 'curle_share_in_use', + 'curle_ssl_certproblem', + 'curle_ssl_cipher', + 'curle_ssl_cacert', + 'curle_bad_content_encoding', + 'curle_ldap_invalid_url', + 'curle_filesize_exceeded', + 'curle_ftp_ssl_failed', + 'curle_send_fail_rewind', + 'curle_ssl_engine_initfailed', + 'curle_login_denied', + 'curlmsg_done', + 'regexp', + 'array', + 'boolean', + 'zip_open', + 'zip_name_locate', + 'zip_fopen', + 'zip_fopen_index', + 'zip_fread', + 'zip_fclose', + 'zip_close', + 'zip_stat', + 'zip_stat_index', + 'zip_get_archive_comment', + 'zip_get_file_comment', + 'zip_get_name', + 'zip_get_num_files', + 'zip_add', + 'zip_replace', + 'zip_add_dir', + 'zip_set_file_comment', + 'zip_rename', + 'zip_delete', + 'zip_unchange', + 'zip_unchange_all', + 'zip_unchange_archive', + 'zip_set_archive_comment', + 'zip_error_to_str', + 'zip_file_strerror', + 'zip_strerror', + 'zip_error_get', + 'zip_file_error_get', + 'zip_error_get_sys_type', + 'zlib_version', + 'fastcgi_initiate_request', + 'debugging_enabled', + 'debugging_stop', + 'evdns_resolve_ipv4', + 'evdns_resolve_ipv6', + 'evdns_resolve_reverse', + 'evdns_resolve_reverse_ipv6', + 'library_thread_loader', + 'stdout', + 'stdoutnl', + 'fail', + 'fail_if', + 'fail_ifnot', + 'error_code', + 'error_msg', + 'error_obj', + 'error_stack', + 'error_push', + 'error_pop', + 'error_reset', + 'error_msg_invalidparameter', + 'error_code_invalidparameter', + 'error_msg_networkerror', + 'error_code_networkerror', + 'error_msg_runtimeassertion', + 'error_code_runtimeassertion', + 'error_msg_methodnotfound', + 'error_code_methodnotfound', + 'error_msg_resnotfound', + 'error_code_resnotfound', + 'error_msg_filenotfound', + 'error_code_filenotfound', + 'error_msg_aborted', + 'error_code_aborted', + 'error_msg_dividebyzero', + 'error_code_dividebyzero', + 'error_msg_noerror', + 'error_code_noerror', + 'abort', + 'protect', + 'trait_asstring', + 'any', + 'trait_generator', + 'trait_decompose_assignment', + 'trait_foreach', + 'trait_generatorcentric', + 'generateforeach', + 'generateforeachunkeyed', + 'generateforeachkeyed', + 'trait_foreachtextelement', + 'trait_finite', + 'trait_finiteforeach', + 'trait_keyed', + 'trait_keyedfinite', + 'trait_keyedforeach', + 'trait_frontended', + 'trait_backended', + 'trait_doubleended', + 'trait_positionallykeyed', + 'trait_expandable', + 'trait_frontexpandable', + 'trait_backexpandable', + 'trait_contractible', + 'trait_frontcontractible', + 'trait_backcontractible', + 'trait_fullymutable', + 'trait_keyedmutable', + 'trait_endedfullymutable', + 'trait_setoperations', + 'trait_searchable', + 'trait_positionallysearchable', + 'trait_pathcomponents', + 'trait_readbytes', + 'trait_writebytes', + 'trait_setencoding', + 'trait_readstring', + 'trait_writestring', + 'trait_hashable', + 'eacher', + 'trait_each_sub', + 'trait_stack', + 'trait_list', + 'trait_array', + 'trait_map', + 'trait_close', + 'trait_file', + 'trait_scalar', + 'method_name', + 'trait_queriablelambda', + 'trait_queriable', + 'queriable_asstring', + 'queriable_where', + 'queriable_do', + 'queriable_sum', + 'queriable_average', + 'queriable_min', + 'queriable_max', + 'queriable_select', + 'queriable_selectmany', + 'queriable_groupby', + 'queriable_join', + 'queriable_groupjoin', + 'queriable_orderby', + 'queriable_orderbydescending', + 'queriable_thenby', + 'queriable_thenbydescending', + 'queriable_skip', + 'queriable_take', + 'queriable_grouping', + 'queriable_internal_combinebindings', + 'queriable_defaultcompare', + 'queriable_reversecompare', + 'queriable_qsort', + 'generateseries', + 'timer', + 'tie', + 'pairup', + 'delve', + 'repeat', + 'thread_var_push', + 'thread_var_pop', + 'thread_var_get', + 'loop_value', + 'loop_value_push', + 'loop_value_pop', + 'loop_key', + 'loop_key_push', + 'loop_key_pop', + 'loop_push', + 'loop_pop', + 'loop_count', + 'loop_continue', + 'loop_abort', + 'loop', + 'sys_while', + 'sys_iterate', + 'pair_compare', + 'serialization_object_identity_compare', + 'serialization_element', + 'trait_serializable', + 'serialization_writer_standin', + 'serialization_writer_ref', + 'serialization_writer', + 'serialization_reader', + 'string_validcharset', + 'eol', + 'encoding_utf8', + 'encoding_iso88591', + 'trait_treenode', + 'tree_nullnode', + 'tree_node', + 'tree_base', + 'map_node', + 'map', + 'integer_random', + 'integer_bitor', + 'millis', + 'micros', + 'max', + 'min', + 'range', + 'median', + 'decimal_random', + 'pi', + 'lcapi_datasourceinit', + 'lcapi_datasourceterm', + 'lcapi_datasourcenames', + 'lcapi_datasourcetablenames', + 'lcapi_datasourcesearch', + 'lcapi_datasourceadd', + 'lcapi_datasourceupdate', + 'lcapi_datasourcedelete', + 'lcapi_datasourceinfo', + 'lcapi_datasourceexecsql', + 'lcapi_datasourcerandom', + 'lcapi_datasourceschemanames', + 'lcapi_datasourcecloseconnection', + 'lcapi_datasourcetickle', + 'lcapi_datasourceduplicate', + 'lcapi_datasourcescripts', + 'lcapi_datasourceimage', + 'lcapi_datasourcefindall', + 'lcapi_datasourcematchesname', + 'lcapi_datasourcepreparesql', + 'lcapi_datasourceunpreparesql', + 'lcapi_datasourcenothing', + 'lcapi_fourchartointeger', + 'lcapi_datasourcetypestring', + 'lcapi_datasourcetypeinteger', + 'lcapi_datasourcetypeboolean', + 'lcapi_datasourcetypeblob', + 'lcapi_datasourcetypedecimal', + 'lcapi_datasourcetypedate', + 'lcapi_datasourceprotectionnone', + 'lcapi_datasourceprotectionreadonly', + 'lcapi_datasourceopgt', + 'lcapi_datasourceopgteq', + 'lcapi_datasourceopeq', + 'lcapi_datasourceopneq', + 'lcapi_datasourceoplt', + 'lcapi_datasourceoplteq', + 'lcapi_datasourceopbw', + 'lcapi_datasourceopew', + 'lcapi_datasourceopct', + 'lcapi_datasourceopnct', + 'lcapi_datasourceopnbw', + 'lcapi_datasourceopnew', + 'lcapi_datasourceopand', + 'lcapi_datasourceopor', + 'lcapi_datasourceopnot', + 'lcapi_datasourceopno', + 'lcapi_datasourceopany', + 'lcapi_datasourceopin', + 'lcapi_datasourceopnin', + 'lcapi_datasourceopft', + 'lcapi_datasourceoprx', + 'lcapi_datasourceopnrx', + 'lcapi_datasourcesortascending', + 'lcapi_datasourcesortdescending', + 'lcapi_datasourcesortcustom', + 'lcapi_loadmodules', + 'lasso_version', + 'lasso_uniqueid', + 'usage', + 'file_defaultencoding', + 'file_copybuffersize', + 'file_modeline', + 'file_modechar', + 'file_forceroot', + 'file_tempfile', + 'file', + 'file_stdin', + 'file_stdout', + 'file_stderr', + 'lasso_tagexists', + 'lasso_methodexists', + 'output', + 'if_empty', + 'if_null', + 'if_true', + 'if_false', + 'process', + 'treemap', + 'locale_format', + 'compress', + 'uncompress', + 'decompress', + 'tag_name', + 'series', + 'nslookup', + 'all', + 'bw', + 'cn', + 'eq', + 'ew', + 'ft', + 'gt', + 'gte', + 'lt', + 'lte', + 'neq', + 'nrx', + 'rx', + 'none', + 'minimal', + 'full', + 'output_none', + 'lasso_executiontimelimit', + 'namespace_global', + 'namespace_using', + 'namespace_import', + 'site_id', + 'site_name', + 'sys_homepath', + 'sys_masterhomepath', + 'sys_supportpath', + 'sys_librariespath', + 'sys_databasespath', + 'sys_usercapimodulepath', + 'sys_appspath', + 'sys_userstartuppath', + 'dir', + 'magick_image', + 'ldap', + 'ldap_scope_base', + 'ldap_scope_onelevel', + 'ldap_scope_subtree', + 'mysqlds', + 'os_process', + 'odbc', + 'sqliteconnector', + 'sqlite_createdb', + 'sqlite_setsleepmillis', + 'sqlite_setsleeptries', + 'java_jvm_getenv', + 'java_jvm_create', + 'java_jdbc_load', + 'database_database', + 'database_table_datasources', + 'database_table_datasource_hosts', + 'database_table_datasource_databases', + 'database_table_database_tables', + 'database_table_table_fields', + 'database_qs', + 'database_initialize', + 'database_util_cleanpath', + 'database_adddefaultsqlitehost', + 'database_registry', + 'sqlite_ok', + 'sqlite_error', + 'sqlite_internal', + 'sqlite_perm', + 'sqlite_abort', + 'sqlite_busy', + 'sqlite_locked', + 'sqlite_nomem', + 'sqlite_readonly', + 'sqlite_interrupt', + 'sqlite_ioerr', + 'sqlite_corrupt', + 'sqlite_notfound', + 'sqlite_full', + 'sqlite_cantopen', + 'sqlite_protocol', + 'sqlite_empty', + 'sqlite_schema', + 'sqlite_toobig', + 'sqlite_constraint', + 'sqlite_mismatch', + 'sqlite_misuse', + 'sqlite_nolfs', + 'sqlite_auth', + 'sqlite_format', + 'sqlite_range', + 'sqlite_notadb', + 'sqlite_row', + 'sqlite_done', + 'sqlite_integer', + 'sqlite_float', + 'sqlite_blob', + 'sqlite_null', + 'sqlite_text', + 'sqlite3', + 'sqlite_db', + 'sqlite_results', + 'sqlite_currentrow', + 'sqlite_table', + 'sqlite_column', + 'bom_utf16be', + 'bom_utf16le', + 'bom_utf32be', + 'bom_utf32le', + 'bom_utf8', + 'curl', + 'include_url', + 'ftp_getdata', + 'ftp_getfile', + 'ftp_getlisting', + 'ftp_putdata', + 'ftp_putfile', + 'ftp_deletefile', + 'date', + 'debugging_step_in', + 'debugging_get_stack', + 'debugging_get_context', + 'debugging_detach', + 'debugging_step_over', + 'debugging_step_out', + 'debugging_run', + 'debugging_break', + 'debugging_breakpoint_set', + 'debugging_breakpoint_get', + 'debugging_breakpoint_remove', + 'debugging_breakpoint_list', + 'debugging_breakpoint_update', + 'debugging_terminate', + 'debugging_context_locals', + 'debugging_context_vars', + 'debugging_context_self', + 'debugging_stack', + 'dbgp_stop_stack_name', + 'dbgp_server', + 'dbgp_packet', + 'duration', + 'encrypt_md5', + 'inline_columninfo_pos', + 'inline_resultrows_pos', + 'inline_foundcount_pos', + 'inline_colinfo_name_pos', + 'inline_colinfo_valuelist_pos', + 'inline_scopeget', + 'inline_scopepush', + 'inline_scopepop', + 'inline_namedget', + 'inline_namedput', + 'inline', + 'inline_type', + 'resultset_count', + 'resultset', + 'resultsets', + 'rows', + 'rows_impl', + 'records', + 'column', + 'field', + 'column_names', + 'field_names', + 'column_name', + 'field_name', + 'found_count', + 'shown_count', + 'shown_first', + 'shown_last', + 'action_statement', + 'lasso_currentaction', + 'maxrecords_value', + 'skiprecords_value', + 'action_param', + 'action_params', + 'admin_authorization', + 'admin_currentgroups', + 'admin_currentuserid', + 'admin_currentusername', + 'database_name', + 'table_name', + 'layout_name', + 'schema_name', + 'keycolumn_name', + 'keyfield_name', + 'keycolumn_value', + 'keyfield_value', + 'inline_colinfo_type_pos', + 'column_type', + 'rows_array', + 'records_array', + 'records_map', + 'trait_json_serialize', + 'json_serialize', + 'json_consume_string', + 'json_consume_token', + 'json_consume_array', + 'json_consume_object', + 'json_deserialize', + 'json_literal', + 'json_object', + 'json_rpccall', + 'list_node', + 'list', + 'jchar', + 'jchararray', + 'jbyte', + 'jbytearray', + 'jfloat', + 'jint', + 'jshort', + 'ljapi_initialize', + 'formattingbase', + 'currency', + 'scientific', + 'percent', + 'dateandtime', + 'timeonly', + 'locale_format_style_full', + 'locale_format_style_long', + 'locale_format_style_medium', + 'locale_format_style_short', + 'locale_format_style_default', + 'locale_format_style_none', + 'locale_format_style_date_time', + 'net_connectinprogress', + 'net_connectok', + 'net_typessl', + 'net_typessltcp', + 'net_typessludp', + 'net_typetcp', + 'net_typeudp', + 'net_waitread', + 'net_waittimeout', + 'net_waitwrite', + 'trait_net', + 'net_tcp', + 'net_tcpssl', + 'net_named_pipe', + 'net_udppacket', + 'net_udp', + 'admin_initialize', + 'admin_getpref', + 'admin_setpref', + 'admin_removepref', + 'admin_userexists', + 'admin_lassoservicepath', + 'pdf_package', + 'pdf_rectangle', + 'pdf_typebase', + 'pdf_doc', + 'pdf_color', + 'pdf_barcode', + 'pdf_font', + 'pdf_image', + 'pdf_list', + 'pdf_read', + 'pdf_table', + 'pdf_text', + 'pdf_hyphenator', + 'pdf_chunk', + 'pdf_phrase', + 'pdf_paragraph', + 'pdf_serve', + 'queue', + 'random_seed', + 'set', + 'sys_process', + 'worker_pool', + 'xml', + 'trait_xml_elementcompat', + 'trait_xml_nodecompat', + 'xml_transform', + 'zip_create', + 'zip_excl', + 'zip_checkcons', + 'zip_fl_nocase', + 'zip_fl_nodir', + 'zip_fl_compressed', + 'zip_fl_unchanged', + 'zip_er_ok', + 'zip_er_multidisk', + 'zip_er_rename', + 'zip_er_close', + 'zip_er_seek', + 'zip_er_read', + 'zip_er_write', + 'zip_er_crc', + 'zip_er_zipclosed', + 'zip_er_noent', + 'zip_er_exists', + 'zip_er_open', + 'zip_er_tmpopen', + 'zip_er_zlib', + 'zip_er_memory', + 'zip_er_changed', + 'zip_er_compnotsupp', + 'zip_er_eof', + 'zip_er_inval', + 'zip_er_nozip', + 'zip_er_internal', + 'zip_er_incons', + 'zip_er_remove', + 'zip_er_deleted', + 'zip_et_none', + 'zip_et_sys', + 'zip_et_zlib', + 'zip_cm_default', + 'zip_cm_store', + 'zip_cm_shrink', + 'zip_cm_reduce_1', + 'zip_cm_reduce_2', + 'zip_cm_reduce_3', + 'zip_cm_reduce_4', + 'zip_cm_implode', + 'zip_cm_deflate', + 'zip_cm_deflate64', + 'zip_cm_pkware_implode', + 'zip_cm_bzip2', + 'zip_em_none', + 'zip_em_trad_pkware', + 'zip_em_des', + 'zip_em_rc2_old', + 'zip_em_3des_168', + 'zip_em_3des_112', + 'zip_em_aes_128', + 'zip_em_aes_192', + 'zip_em_aes_256', + 'zip_em_rc2', + 'zip_em_rc4', + 'zip_em_unknown', + 'zip_file', + 'zip', + 'cache_server_element', + 'cache_server', + 'dns_response', + 'dns_lookup', + 'dns_default', + 'string_charfromname', + 'string_concatenate', + 'string_endswith', + 'string_extract', + 'string_findposition', + 'string_findregexp', + 'string_getunicodeversion', + 'string_insert', + 'string_isalpha', + 'string_isalphanumeric', + 'string_isdigit', + 'string_ishexdigit', + 'string_islower', + 'string_isnumeric', + 'string_ispunctuation', + 'string_isspace', + 'string_isupper', + 'string_length', + 'string_remove', + 'string_removeleading', + 'string_removetrailing', + 'string_replace', + 'string_replaceregexp', + 'string_todecimal', + 'string_tointeger', + 'string_uppercase', + 'string_lowercase', + 'document', + 'component_render_state', + 'component', + 'component_container', + 'document_base', + 'document_body', + 'document_header', + 'text_document', + 'data_document', + 'email_attachment_mime_type', + 'email_translatebreakstocrlf', + 'email_findemails', + 'email_fix_address', + 'email_fix_address_list', + 'email_compose', + 'email_send', + 'email_queue', + 'email_immediate', + 'email_result', + 'email_status', + 'email_token', + 'email_merge', + 'email_batch', + 'encode_qheader', + 'email_pop', + 'email_parse', + 'email_safeemail', + 'email_extract', + 'email_pop_priv_substring', + 'email_pop_priv_extract', + 'email_digestchallenge', + 'email_pop_priv_quote', + 'email_digestresponse', + 'encrypt_hmac', + 'encrypt_crammd5', + 'email_queue_impl_base', + 'email_fs_error_clean', + 'email_stage_impl_base', + 'email_initialize', + 'email_mxlookup', + 'lasso_errorreporting', + 'fcgi_version_1', + 'fcgi_null_request_id', + 'fcgi_begin_request', + 'fcgi_abort_request', + 'fcgi_end_request', + 'fcgi_params', + 'fcgi_stdin', + 'fcgi_stdout', + 'fcgi_stderr', + 'fcgi_data', + 'fcgi_get_values', + 'fcgi_get_values_result', + 'fcgi_unknown_type', + 'fcgi_keep_conn', + 'fcgi_responder', + 'fcgi_authorize', + 'fcgi_filter', + 'fcgi_request_complete', + 'fcgi_cant_mpx_conn', + 'fcgi_overloaded', + 'fcgi_unknown_role', + 'fcgi_max_conns', + 'fcgi_max_reqs', + 'fcgi_mpxs_conns', + 'fcgi_read_timeout_seconds', + 'fcgi_record', + 'fcgi_makeendrequestbody', + 'fcgi_bodychunksize', + 'fcgi_makestdoutbody', + 'fcgi_readparam', + 'web_connection', + 'web_request_impl', + 'web_request', + 'fcgi_request', + 'include_cache_compare', + 'include_cache', + 'atbegin', + 'fastcgi_initialize', + 'fastcgi_handlecon', + 'fastcgi_handlereq', + 'fastcgi_each_fcgi_param', + 'fastcgi_createfcgirequest', + 'fastcgi_server', + 'web_handlefcgirequest', + 'filemaker_datasource', + 'filemakerds_initialize', + 'filemakerds', + 'value_listitem', + 'valuelistitem', + 'selected', + 'checked', + 'value_list', + 'http_document', + 'http_document_header', + 'http_header_field', + 'html_document_head', + 'html_document_body', + 'raw_document_body', + 'bytes_document_body', + 'html_element_coreattrs', + 'html_element_i18nattrs', + 'html_element_eventsattrs', + 'html_attributed', + 'html_attr', + 'html_atomic_element', + 'html_container_element', + 'http_error', + 'html_script', + 'html_text', + 'html_raw', + 'html_binary', + 'html_json', + 'html_cdata', + 'html_eol', + 'html_div', + 'html_span', + 'html_br', + 'html_hr', + 'html_h1', + 'html_h2', + 'html_h3', + 'html_h4', + 'html_h5', + 'html_h6', + 'html_meta', + 'html_link', + 'html_object', + 'html_style', + 'html_base', + 'html_table', + 'html_tr', + 'html_td', + 'html_th', + 'html_img', + 'html_form', + 'html_fieldset', + 'html_legend', + 'html_input', + 'html_label', + 'html_option', + 'html_select', + 'http_char_space', + 'http_char_htab', + 'http_char_cr', + 'http_char_lf', + 'http_char_question', + 'http_char_colon', + 'http_read_timeout_secs', + 'http_server_web_connection', + 'http_server', + 'http_server_connection_handler', + 'image', + 'jdbc_initialize', + 'lassoapp_settingsdb', + 'lassoapp_resource', + 'lassoapp_format_mod_date', + 'lassoapp_include_current', + 'lassoapp_include', + 'lassoapp_find_missing_file', + 'lassoapp_source', + 'lassoapp_capabilities', + 'lassoapp_get_capabilities_name', + 'lassoapp_exists', + 'lassoapp_path_to_method_name', + 'lassoapp_invoke_resource', + 'lassoapp_installer', + 'lassoapp_initialize_db', + 'lassoapp_initialize', + 'lassoapp_content_rep_halt', + 'lassoapp_issourcefileextension', + 'lassoapp_dirsrc_fileresource', + 'lassoapp_dirsrc_appsource', + 'lassoapp_livesrc_fileresource', + 'lassoapp_livesrc_appsource', + 'lassoapp_long_expiring_bytes', + 'lassoapp_zip_file_server', + 'lassoapp_zipsrc_fileresource', + 'lassoapp_zipsrc_appsource', + 'lassoapp_compiledsrc_fileresource', + 'lassoapp_compiledsrc_appsource', + 'lassoapp_manualsrc_appsource', + 'lassoapp_current_include', + 'lassoapp_current_app', + 'lassoapp_do_with_include', + 'lassoapp_link', + 'lassoapp_load_module', + 'lassoapp_mime_type_html', + 'lassoapp_mime_type_lasso', + 'lassoapp_mime_type_xml', + 'lassoapp_mime_type_ppt', + 'lassoapp_mime_type_js', + 'lassoapp_mime_type_txt', + 'lassoapp_mime_type_jpg', + 'lassoapp_mime_type_png', + 'lassoapp_mime_type_gif', + 'lassoapp_mime_type_css', + 'lassoapp_mime_type_csv', + 'lassoapp_mime_type_tif', + 'lassoapp_mime_type_ico', + 'lassoapp_mime_type_rss', + 'lassoapp_mime_type_xhr', + 'lassoapp_mime_type_pdf', + 'lassoapp_mime_type_docx', + 'lassoapp_mime_type_doc', + 'lassoapp_mime_type_zip', + 'lassoapp_mime_type_svg', + 'lassoapp_mime_type_ttf', + 'lassoapp_mime_type_woff', + 'lassoapp_mime_get', + 'log_level_critical', + 'log_level_warning', + 'log_level_detail', + 'log_level_sql', + 'log_level_deprecated', + 'log_destination_console', + 'log_destination_file', + 'log_destination_database', + 'log', + 'log_setdestination', + 'log_always', + 'log_critical', + 'log_warning', + 'log_detail', + 'log_sql', + 'log_deprecated', + 'log_max_file_size', + 'log_trim_file_size', + 'log_impl_base', + 'log_initialize', + 'portal_impl', + 'portal', + 'security_database', + 'security_table_groups', + 'security_table_users', + 'security_table_ug_map', + 'security_default_realm', + 'security_initialize', + 'security_registry', + 'session_driver', + 'session_initialize', + 'session_getdefaultdriver', + 'session_setdefaultdriver', + 'session_start', + 'session_addvar', + 'session_removevar', + 'session_end', + 'session_id', + 'session_abort', + 'session_result', + 'session_deleteexpired', + 'memory_session_driver_impl_entry', + 'memory_session_driver_impl', + 'sqlite_session_driver_impl_entry', + 'sqlite_session_driver_impl', + 'mysql_session_driver_impl', + 'odbc_session_driver_mssql', + 'odbc_session_driver_impl', + 'session_decorate', + 'session_delete_expired_thread', + 'email_smtp', + 'auth_admin', + 'auth_check', + 'auth_custom', + 'auth_group', + 'auth_prompt', + 'auth_user', + 'client_address', + 'client_addr', + 'client_authorization', + 'client_browser', + 'client_contentlength', + 'client_contenttype', + 'client_cookielist', + 'client_cookies', + 'client_encoding', + 'client_formmethod', + 'client_getargs', + 'client_getparams', + 'client_getparam', + 'client_headers', + 'client_integertoip', + 'client_ip', + 'client_iptointeger', + 'client_password', + 'client_postargs', + 'client_postparams', + 'client_postparam', + 'client_type', + 'client_username', + 'client_url', + 'referer_url', + 'referrer_url', + 'content_type', + 'content_encoding', + 'cookie', + 'cookie_set', + 'include', + 'include_currentpath', + 'include_filepath', + 'include_localpath', + 'include_once', + 'include_path', + 'include_raw', + 'includes', + 'library', + 'library_once', + 'response_filepath', + 'response_localpath', + 'response_path', + 'response_realm', + 'response_root', + 'redirect_url', + 'server_admin', + 'server_name', + 'server_ip', + 'server_port', + 'server_protocol', + 'server_signature', + 'server_software', + 'server_push', + 'token_value', + 'wap_isenabled', + 'wap_maxbuttons', + 'wap_maxhorzpixels', + 'wap_maxvertpixels', + 'wap_maxcolumns', + 'wap_maxrows', + 'define_atbegin', + 'define_atend', + 'content_header', + 'content_addheader', + 'content_replaceheader', + 'content_body', + 'html_comment', + 'web_node_content_json_specialized', + 'web_node', + 'web_node_container', + 'web_node_content_representation', + 'web_node_content', + 'web_node_content_document', + 'web_node_postable', + 'web_node_base', + 'web_node_forpath', + 'web_nodes_requesthandler', + 'web_nodes_normalizeextension', + 'web_nodes_processcontentnode', + 'web_node_root', + 'web_nodes_initialize', + 'web_node_content_representation_xhr_container', + 'web_node_content_representation_xhr', + 'web_node_content_html_specialized', + 'web_node_content_representation_html_specialized', + 'web_node_content_representation_html', + 'web_node_content_css_specialized', + 'web_node_content_representation_css_specialized', + 'web_node_content_representation_css', + 'web_node_content_js_specialized', + 'web_node_content_representation_js_specialized', + 'web_node_content_representation_js', + 'web_node_echo', + 'web_response_nodesentry', + 'web_error_atend', + 'web_response_impl', + 'web_response', + 'web_router_database', + 'web_router_initialize', + 'web_router', + 'asstring', + 'isnota', + 'isallof', + 'isanyof', + 'oncompare', + 'isa', + 'ascopy', + 'ascopydeep', + 'type', + 'invoke', + 'atend', + 'decomposeassignment', + 'asgenerator', + 'foreach', + 'eachword', + 'eachline', + 'eachcharacter', + 'foreachwordbreak', + 'foreachlinebreak', + 'foreachcharacter', + 'isempty', + 'isnotempty', + 'ifempty', + 'ifnotempty', + 'size', + 'values', + 'asarray', + 'aslist', + 'asstaticarray', + 'join', + 'get', + 'keys', + 'askeyedgenerator', + 'eachpair', + 'eachkey', + 'foreachpair', + 'foreachkey', + 'front', + 'first', + 'back', + 'last', + 'second', + 'insert', + 'insertfront', + 'insertfirst', + 'insertback', + 'insertfrom', + 'insertlast', + 'remove', + 'removeall', + 'removefront', + 'removefirst', + 'removeback', + 'removelast', + 'difference', + 'intersection', + 'union', + 'contains', + 'find', + 'findposition', + 'componentdelimiter', + 'extensiondelimiter', + 'lastcomponent', + 'foreachpathcomponent', + 'eachcomponent', + 'striplastcomponent', + 'firstcomponent', + 'stripfirstcomponent', + 'splitextension', + 'hastrailingcomponent', + 'isfullpath', + 'findlast', + 'sub', + 'readsomebytes', + 'readbytesfully', + 'readbytes', + 'writebytes', + 'encoding', + 'readstring', + 'writestring', + 'hash', + 'foreachsub', + 'eachsub', + 'push', + 'pop', + 'top', + 'dowithclose', + 'close', + 'fd', + 'do', + 'sum', + 'average', + 'where', + 'select', + 'selectmany', + 'groupby', + 'groupjoin', + 'orderby', + 'orderbydescending', + 'thenby', + 'thenbydescending', + 'skip', + 'take', + 'serialize', + 'serializationelements', + 'acceptdeserializedelement', + 'left', + 'right', + 'up', + 'value', + 'bind', + 'listen', + 'localaddress', + 'remoteaddress', + 'shutdownrd', + 'shutdownwr', + 'shutdownrdwr', + 'setname', + 'contents', + 'tagname', + 'foreachchild', + 'eachchild', + 'foreachmatch', + 'eachmatch', + 'haschildnodes', + 'childnodes', + 'extract', + 'connection', + 'requestparams', + 'stdin', + 'mimes', + 'setstatus', + 'getstatus', + 'writeheaderline', + 'writeheaderbytes', + 'writebodybytes', + 'id', + 'class', + 'style', + 'title', + 'gethtmlattr', + 'lang', + 'onclick', + 'ondblclick', + 'onmousedown', + 'onmouseup', + 'onmouseover', + 'onmousemove', + 'onmouseout', + 'onkeypress', + 'onkeydown', + 'onkeyup', + 'sethtmlattr', + 'gethtmlattrstring', + 'hashtmlattr', + 'addcomponent', + 'attributes', + 'issourcefile', + 'resourceinvokable', + 'resourcename', + 'fullpath', + 'appname', + 'srcpath', + 'resources', + 'foo', + 'startup', + 'validatesessionstable', + 'createtable', + 'fetchdata', + 'savedata', + 'init', + 'kill', + 'expire', + 'jsonlabel', + 'jsonhtml', + 'jsonisleaf', + 'delim', + 'name', + 'path', + 'nodelist', + 'subnode', + 'subnodes', + 'representnoderesult', + 'mime', + 'extensions', + 'representnode', + 'defaultcontentrepresentation', + 'supportscontentrepresentation', + 'acceptpost', + 'htmlcontent', + 'csscontent', + 'jscontent', + 'escape_member', + 'sameas', + 'parent', + 'settrait', + 'oncreate', + 'listmethods', + 'hasmethod', + 'addtrait', + 'gettype', + 'istype', + 'doccomment', + 'requires', + 'provides', + 'subtraits', + 'description', + 'hosttonet16', + 'hosttonet32', + 'nettohost16', + 'nettohost32', + 'nettohost64', + 'hosttonet64', + 'bitset', + 'bittest', + 'bitflip', + 'bitclear', + 'bitor', + 'bitand', + 'bitxor', + 'bitnot', + 'bitshiftleft', + 'bitshiftright', + 'abs', + 'div', + 'dereferencepointer', + 'asdecimal', + 'deg2rad', + 'asstringhex', + 'asstringoct', + 'acos', + 'asin', + 'atan', + 'atan2', + 'ceil', + 'cos', + 'cosh', + 'exp', + 'fabs', + 'floor', + 'frexp', + 'ldexp', + 'log10', + 'modf', + 'pow', + 'sin', + 'sinh', + 'sqrt', + 'tan', + 'tanh', + 'erf', + 'erfc', + 'gamma', + 'hypot', + 'j0', + 'j1', + 'jn', + 'lgamma', + 'y0', + 'y1', + 'yn', + 'isnan', + 'acosh', + 'asinh', + 'atanh', + 'cbrt', + 'expm1', + 'nextafter', + 'scalb', + 'ilogb', + 'log1p', + 'logb', + 'remainder', + 'rint', + 'asinteger', + 'self', + 'detach', + 'restart', + 'resume', + 'continuation', + 'home', + 'callsite_file', + 'callsite_line', + 'callsite_col', + 'callstack', + 'splitthread', + 'threadreaddesc', + 'givenblock', + 'autocollectbuffer', + 'calledname', + 'methodname', + 'invokeuntil', + 'invokewhile', + 'invokeautocollect', + 'asasync', + 'append', + 'appendchar', + 'private_find', + 'private_findlast', + 'length', + 'chardigitvalue', + 'private_compare', + 'charname', + 'chartype', + 'decompose', + 'normalize', + 'digit', + 'foldcase', + 'private_merge', + 'unescape', + 'trim', + 'titlecase', + 'reverse', + 'getisocomment', + 'getnumericvalue', + 'totitle', + 'toupper', + 'tolower', + 'lowercase', + 'uppercase', + 'isalnum', + 'isalpha', + 'isbase', + 'iscntrl', + 'isdigit', + 'isxdigit', + 'islower', + 'isprint', + 'isspace', + 'istitle', + 'ispunct', + 'isgraph', + 'isblank', + 'isualphabetic', + 'isulowercase', + 'isupper', + 'isuuppercase', + 'isuwhitespace', + 'iswhitespace', + 'encodehtml', + 'decodehtml', + 'encodexml', + 'decodexml', + 'encodehtmltoxml', + 'getpropertyvalue', + 'hasbinaryproperty', + 'asbytes', + 'equals', + 'compare', + 'comparecodepointorder', + 'padleading', + 'padtrailing', + 'merge', + 'split', + 'removeleading', + 'removetrailing', + 'beginswith', + 'endswith', + 'replace', + 'eachwordbreak', + 'encodesql92', + 'encodesql', + 'substring', + 'setsize', + 'reserve', + 'getrange', + 'private_setrange', + 'importas', + 'import8bits', + 'import32bits', + 'import64bits', + 'import16bits', + 'importbytes', + 'importpointer', + 'export8bits', + 'export16bits', + 'export32bits', + 'export64bits', + 'exportbytes', + 'exportsigned8bits', + 'exportsigned16bits', + 'exportsigned32bits', + 'exportsigned64bits', + 'marker', + 'swapbytes', + 'encodeurl', + 'decodeurl', + 'encodebase64', + 'decodebase64', + 'encodeqp', + 'decodeqp', + 'encodemd5', + 'encodehex', + 'decodehex', + 'detectcharset', + 'bestcharset', + 'crc', + 'importstring', + 'setrange', + 'exportas', + 'exportstring', + 'exportpointerbits', + 'foreachbyte', + 'eachbyte', + 'typename', + 'returntype', + 'restname', + 'paramdescs', + 'action', + 'statement', + 'inputcolumns', + 'keycolumns', + 'returncolumns', + 'sortcolumns', + 'skiprows', + 'maxrows', + 'rowsfound', + 'statementonly', + 'lop', + 'databasename', + 'tablename', + 'schemaname', + 'hostid', + 'hostdatasource', + 'hostname', + 'hostport', + 'hostusername', + 'hostpassword', + 'hostschema', + 'hosttableencoding', + 'hostextra', + 'hostisdynamic', + 'refobj', + 'prepared', + 'getset', + 'addset', + 'numsets', + 'addrow', + 'addcolumninfo', + 'forcedrowid', + 'makeinheritedcopy', + 'filename', + 'expose', + 'recover', + 'count', + 'exchange', + 'findindex', + 'sort', + 'family', + 'isvalid', + 'isssl', + 'open', + 'read', + 'write', + 'ioctl', + 'seek', + 'mode', + 'mtime', + 'atime', + 'dup', + 'dup2', + 'fchdir', + 'fchown', + 'fsync', + 'ftruncate', + 'fchmod', + 'sendfd', + 'receivefd', + 'readobject', + 'tryreadobject', + 'writeobject', + 'leaveopen', + 'rewind', + 'tell', + 'language', + 'script', + 'country', + 'variant', + 'displaylanguage', + 'displayscript', + 'displaycountry', + 'displayvariant', + 'displayname', + 'basename', + 'keywords', + 'iso3language', + 'iso3country', + 'formatas', + 'formatnumber', + 'parsenumber', + 'parseas', + 'format', + 'parse', + 'add', + 'roll', + 'getattr', + 'setattr', + 'clear', + 'isset', + 'settimezone', + 'timezone', + 'time', + 'indaylighttime', + 'createdocument', + 'parsedocument', + 'hasfeature', + 'createdocumenttype', + 'nodename', + 'nodevalue', + 'nodetype', + 'parentnode', + 'firstchild', + 'lastchild', + 'previoussibling', + 'nextsibling', + 'ownerdocument', + 'namespaceuri', + 'prefix', + 'localname', + 'insertbefore', + 'replacechild', + 'removechild', + 'appendchild', + 'clonenode', + 'issupported', + 'hasattributes', + 'extractone', + 'transform', + 'data', + 'substringdata', + 'appenddata', + 'insertdata', + 'deletedata', + 'replacedata', + 'doctype', + 'implementation', + 'documentelement', + 'createelement', + 'createdocumentfragment', + 'createtextnode', + 'createcomment', + 'createcdatasection', + 'createprocessinginstruction', + 'createattribute', + 'createentityreference', + 'getelementsbytagname', + 'importnode', + 'createelementns', + 'createattributens', + 'getelementsbytagnamens', + 'getelementbyid', + 'getattribute', + 'setattribute', + 'removeattribute', + 'getattributenode', + 'setattributenode', + 'removeattributenode', + 'getattributens', + 'setattributens', + 'removeattributens', + 'getattributenodens', + 'setattributenodens', + 'hasattribute', + 'hasattributens', + 'specified', + 'ownerelement', + 'splittext', + 'notationname', + 'publicid', + 'systemid', + 'target', + 'entities', + 'notations', + 'internalsubset', + 'item', + 'getnameditem', + 'getnameditemns', + 'setnameditem', + 'setnameditemns', + 'removenameditem', + 'removenameditemns', + 'next', + 'readattributevalue', + 'attributecount', + 'baseuri', + 'depth', + 'hasvalue', + 'isemptyelement', + 'xmllang', + 'getattributenamespace', + 'lookupnamespace', + 'movetoattribute', + 'movetoattributenamespace', + 'movetofirstattribute', + 'movetonextattribute', + 'movetoelement', + 'prepare', + 'last_insert_rowid', + 'total_changes', + 'interrupt', + 'errcode', + 'errmsg', + 'addmathfunctions', + 'finalize', + 'step', + 'bind_blob', + 'bind_double', + 'bind_int', + 'bind_null', + 'bind_text', + 'bind_parameter_index', + 'reset', + 'column_count', + 'column_decltype', + 'column_blob', + 'column_double', + 'column_int64', + 'column_text', + 'ismultipart', + 'gotfileupload', + 'setmaxfilesize', + 'getparts', + 'trackingid', + 'currentfile', + 'addtobuffer', + 'input', + 'replacepattern', + 'findpattern', + 'ignorecase', + 'setinput', + 'setreplacepattern', + 'setfindpattern', + 'setignorecase', + 'appendreplacement', + 'matches', + 'private_replaceall', + 'appendtail', + 'groupcount', + 'matchposition', + 'matchesstart', + 'private_replacefirst', + 'private_split', + 'matchstring', + 'replaceall', + 'replacefirst', + 'findall', + 'findcount', + 'findfirst', + 'findsymbols', + 'loadlibrary', + 'getlibrary', + 'f', + 'r', + 'form', + 'gen', + 'callfirst', + 'key', + 'by', + 'from', + 'to', + 'd', + 't', + 'object', + 'inneroncompare', + 'members', + 'writeid', + 'addmember', + 'refid', + 'index', + 'objects', + 'tabs', + 'trunk', + 'trace', + 'asxml', + 'tabstr', + 'toxmlstring', + 'idmap', + 'readidobjects', + 'red', + 'root', + 'getnode', + 'firstnode', + 'lastnode', + 'nextnode', + 'private_rebalanceforremove', + 'private_rotateleft', + 'private_rotateright', + 'private_rebalanceforinsert', + 'eachnode', + 'foreachnode', + 'resolvelinks', + 'parentdir', + 'aslazystring', + 'openread', + 'openwrite', + 'openwriteonly', + 'openappend', + 'opentruncate', + 'exists', + 'modificationtime', + 'lastaccesstime', + 'modificationdate', + 'lastaccessdate', + 'delete', + 'moveto', + 'copyto', + 'linkto', + 'flush', + 'chmod', + 'chown', + 'isopen', + 'position', + 'setmarker', + 'setposition', + 'setmode', + 'foreachline', + 'lock', + 'unlock', + 'trylock', + 'testlock', + 'perms', + 'islink', + 'isdir', + 'realpath', + 'openwith', + 'create', + 'setcwd', + 'foreachentry', + 'eachpath', + 'eachfilepath', + 'eachdirpath', + 'each', + 'eachfile', + 'eachdir', + 'eachpathrecursive', + 'eachfilepathrecursive', + 'eachdirpathrecursive', + 'eachentry', + 'makefullpath', + 'annotate', + 'blur', + 'command', + 'composite', + 'contrast', + 'convert', + 'crop', + 'execute', + 'enhance', + 'flipv', + 'fliph', + 'modulate', + 'rotate', + 'save', + 'scale', + 'sharpen', + 'addcomment', + 'comments', + 'describe', + 'height', + 'pixel', + 'resolutionv', + 'resolutionh', + 'width', + 'setcolorspace', + 'colorspace', + 'debug', + 'histogram', + 'imgptr', + 'appendimagetolist', + 'fx', + 'applyheatcolors', + 'authenticate', + 'search', + 'searchurl', + 'readerror', + 'readline', + 'setencoding', + 'closewrite', + 'exitcode', + 'getversion', + 'findclass', + 'throw', + 'thrownew', + 'exceptionoccurred', + 'exceptiondescribe', + 'exceptionclear', + 'fatalerror', + 'newglobalref', + 'deleteglobalref', + 'deletelocalref', + 'issameobject', + 'allocobject', + 'newobject', + 'getobjectclass', + 'isinstanceof', + 'getmethodid', + 'callobjectmethod', + 'callbooleanmethod', + 'callbytemethod', + 'callcharmethod', + 'callshortmethod', + 'callintmethod', + 'calllongmethod', + 'callfloatmethod', + 'calldoublemethod', + 'callvoidmethod', + 'callnonvirtualobjectmethod', + 'callnonvirtualbooleanmethod', + 'callnonvirtualbytemethod', + 'callnonvirtualcharmethod', + 'callnonvirtualshortmethod', + 'callnonvirtualintmethod', + 'callnonvirtuallongmethod', + 'callnonvirtualfloatmethod', + 'callnonvirtualdoublemethod', + 'callnonvirtualvoidmethod', + 'getfieldid', + 'getobjectfield', + 'getbooleanfield', + 'getbytefield', + 'getcharfield', + 'getshortfield', + 'getintfield', + 'getlongfield', + 'getfloatfield', + 'getdoublefield', + 'setobjectfield', + 'setbooleanfield', + 'setbytefield', + 'setcharfield', + 'setshortfield', + 'setintfield', + 'setlongfield', + 'setfloatfield', + 'setdoublefield', + 'getstaticmethodid', + 'callstaticobjectmethod', + 'callstaticbooleanmethod', + 'callstaticbytemethod', + 'callstaticcharmethod', + 'callstaticshortmethod', + 'callstaticintmethod', + 'callstaticlongmethod', + 'callstaticfloatmethod', + 'callstaticdoublemethod', + 'callstaticvoidmethod', + 'getstaticfieldid', + 'getstaticobjectfield', + 'getstaticbooleanfield', + 'getstaticbytefield', + 'getstaticcharfield', + 'getstaticshortfield', + 'getstaticintfield', + 'getstaticlongfield', + 'getstaticfloatfield', + 'getstaticdoublefield', + 'setstaticobjectfield', + 'setstaticbooleanfield', + 'setstaticbytefield', + 'setstaticcharfield', + 'setstaticshortfield', + 'setstaticintfield', + 'setstaticlongfield', + 'setstaticfloatfield', + 'setstaticdoublefield', + 'newstring', + 'getstringlength', + 'getstringchars', + 'getarraylength', + 'newobjectarray', + 'getobjectarrayelement', + 'setobjectarrayelement', + 'newbooleanarray', + 'newbytearray', + 'newchararray', + 'newshortarray', + 'newintarray', + 'newlongarray', + 'newfloatarray', + 'newdoublearray', + 'getbooleanarrayelements', + 'getbytearrayelements', + 'getchararrayelements', + 'getshortarrayelements', + 'getintarrayelements', + 'getlongarrayelements', + 'getfloatarrayelements', + 'getdoublearrayelements', + 'getbooleanarrayregion', + 'getbytearrayregion', + 'getchararrayregion', + 'getshortarrayregion', + 'getintarrayregion', + 'getlongarrayregion', + 'getfloatarrayregion', + 'getdoublearrayregion', + 'setbooleanarrayregion', + 'setbytearrayregion', + 'setchararrayregion', + 'setshortarrayregion', + 'setintarrayregion', + 'setlongarrayregion', + 'setfloatarrayregion', + 'setdoublearrayregion', + 'monitorenter', + 'monitorexit', + 'fromreflectedmethod', + 'fromreflectedfield', + 'toreflectedmethod', + 'toreflectedfield', + 'exceptioncheck', + 'dbtablestable', + 'dstable', + 'dsdbtable', + 'dshoststable', + 'fieldstable', + 'sql', + 'adddatasource', + 'loaddatasourceinfo', + 'loaddatasourcehostinfo', + 'getdatasource', + 'getdatasourceid', + 'getdatasourcename', + 'listdatasources', + 'listactivedatasources', + 'removedatasource', + 'listdatasourcehosts', + 'listhosts', + 'adddatasourcehost', + 'getdatasourcehost', + 'removedatasourcehost', + 'getdatabasehost', + 'gethostdatabase', + 'listalldatabases', + 'listdatasourcedatabases', + 'listhostdatabases', + 'getdatasourcedatabase', + 'getdatasourcedatabasebyid', + 'getdatabasebyname', + 'getdatabasebyid', + 'getdatabasebyalias', + 'adddatasourcedatabase', + 'removedatasourcedatabase', + 'listalltables', + 'listdatabasetables', + 'getdatabasetable', + 'getdatabasetablebyalias', + 'getdatabasetablebyid', + 'gettablebyid', + 'adddatabasetable', + 'removedatabasetable', + 'removefield', + 'maybevalue', + 'getuniquealiasname', + 'makecolumnlist', + 'makecolumnmap', + 'datasourcecolumns', + 'datasourcemap', + 'hostcolumns', + 'hostmap', + 'hostcolumns2', + 'hostmap2', + 'databasecolumns', + 'databasemap', + 'tablecolumns', + 'tablemap', + 'databasecolumnnames', + 'hostcolumnnames', + 'hostcolumnnames2', + 'datasourcecolumnnames', + 'tablecolumnnames', + 'bindcount', + 'db', + 'tables', + 'hastable', + 'tablehascolumn', + 'eachrow', + 'bindparam', + 'foreachrow', + 'executelazy', + 'executenow', + 'lastinsertid', + 'table', + 'bindone', + 'src', + 'stat', + 'colmap', + 'getcolumn', + 'locals', + 'getcolumns', + 'bodybytes', + 'headerbytes', + 'ready', + 'token', + 'url', + 'done', + 'header', + 'result', + 'statuscode', + 'raw', + 'version', + 'perform', + 'performonce', + 'asraw', + 'rawdiff', + 'getformat', + 'setformat', + 'subtract', + 'gmt', + 'dst', + 'era', + 'year', + 'month', + 'week', + 'weekofyear', + 'weekofmonth', + 'day', + 'dayofmonth', + 'dayofyear', + 'dayofweek', + 'dayofweekinmonth', + 'ampm', + 'am', + 'pm', + 'hour', + 'hourofday', + 'hourofampm', + 'minute', + 'millisecond', + 'zoneoffset', + 'dstoffset', + 'yearwoy', + 'dowlocal', + 'extendedyear', + 'julianday', + 'millisecondsinday', + 'firstdayofweek', + 'fixformat', + 'minutesbetween', + 'hoursbetween', + 'secondsbetween', + 'daysbetween', + 'businessdaysbetween', + 'pdifference', + 'getfield', + 's', + 'linediffers', + 'sourceline', + 'sourcecolumn', + 'continuationpacket', + 'continuationpoint', + 'continuationstack', + 'features', + 'lastpoint', + 'net', + 'running', + 'source', + 'run', + 'pathtouri', + 'sendpacket', + 'readpacket', + 'handlefeatureset', + 'handlefeatureget', + 'handlestdin', + 'handlestdout', + 'handlestderr', + 'isfirststep', + 'handlecontinuation', + 'ensurestopped', + 'handlestackget', + 'handlecontextnames', + 'formatcontextelements', + 'formatcontextelement', + 'bptypetostr', + 'bptoxml', + 'handlebreakpointlist', + 'handlebreakpointget', + 'handlebreakpointremove', + 'condtoint', + 'inttocond', + 'handlebreakpointupdate', + 'handlebreakpointset', + 'handlecontextget', + 'handlesource', + 'error', + 'stoprunning', + 'pollide', + 'polldbg', + 'runonce', + 'arguments', + 'argumentvalue', + 'end', + 'start', + 'days', + 'foreachday', + 'padzero', + 'actionparams', + 'capi', + 'doclose', + 'isnothing', + 'named', + 'workinginputcolumns', + 'workingkeycolumns', + 'workingreturncolumns', + 'workingsortcolumns', + 'workingkeyfield_name', + 'scanfordatasource', + 'configureds', + 'configuredskeys', + 'scrubkeywords', + 'closeprepared', + 'filterinputcolumn', + 'prev', + 'head', + 'removenode', + 'listnode', + 'accept', + 'connect', + 'foreachaccept', + 'writeobjecttcp', + 'readobjecttcp', + 'begintls', + 'endtls', + 'loadcerts', + 'sslerrfail', + 'fromname', + 'fromport', + 'env', + 'getclass', + 'jobjectisa', + 'new', + 'callvoid', + 'callint', + 'callfloat', + 'callboolean', + 'callobject', + 'callstring', + 'callstaticobject', + 'callstaticstring', + 'callstaticint', + 'callstaticboolean', + 'chk', + 'makecolor', + 'realdoc', + 'addbarcode', + 'addchapter', + 'addcheckbox', + 'addcombobox', + 'addhiddenfield', + 'addimage', + 'addlist', + 'addpage', + 'addparagraph', + 'addpasswordfield', + 'addphrase', + 'addradiobutton', + 'addradiogroup', + 'addresetbutton', + 'addsection', + 'addselectlist', + 'addsubmitbutton', + 'addtable', + 'addtextarea', + 'addtextfield', + 'addtext', + 'arc', + 'circle', + 'closepath', + 'curveto', + 'drawtext', + 'getcolor', + 'getheader', + 'getheaders', + 'getmargins', + 'getpagenumber', + 'getsize', + 'insertpage', + 'line', + 'rect', + 'setcolor', + 'setfont', + 'setlinewidth', + 'setpagenumber', + 'conventionaltop', + 'lowagiefont', + 'jcolor', + 'jbarcode', + 'generatechecksum', + 'getbarheight', + 'getbarmultiplier', + 'getbarwidth', + 'getbaseline', + 'getcode', + 'getfont', + 'gettextalignment', + 'gettextsize', + 'setbarheight', + 'setbarmultiplier', + 'setbarwidth', + 'setbaseline', + 'setcode', + 'setgeneratechecksum', + 'setshowchecksum', + 'settextalignment', + 'settextsize', + 'showchecksum', + 'showcode39startstop', + 'showeanguardbars', + 'jfont', + 'getencoding', + 'getface', + 'getfullfontname', + 'getpsfontname', + 'getsupportedencodings', + 'istruetype', + 'getstyle', + 'getbold', + 'getitalic', + 'getunderline', + 'setface', + 'setunderline', + 'setbold', + 'setitalic', + 'textwidth', + 'jimage', + 'ontop', + 'jlist', + 'jread', + 'addjavascript', + 'exportfdf', + 'extractimage', + 'fieldnames', + 'fieldposition', + 'fieldtype', + 'fieldvalue', + 'gettext', + 'importfdf', + 'javascript', + 'pagecount', + 'pagerotation', + 'pagesize', + 'setfieldvalue', + 'setpagerange', + 'jtable', + 'getabswidth', + 'getalignment', + 'getbordercolor', + 'getborderwidth', + 'getcolumncount', + 'getpadding', + 'getrowcount', + 'getspacing', + 'setalignment', + 'setbordercolor', + 'setborderwidth', + 'setpadding', + 'setspacing', + 'jtext', + 'element', + 'foreachspool', + 'unspool', + 'err', + 'in', + 'out', + 'pid', + 'wait', + 'testexitcode', + 'maxworkers', + 'tasks', + 'workers', + 'startone', + 'addtask', + 'waitforcompletion', + 'scanworkers', + 'scantasks', + 'z', + 'addfile', + 'adddir', + 'adddirpath', + 'foreachfile', + 'foreachfilename', + 'eachfilename', + 'filenames', + 'getfile', + 'meta', + 'criteria', + 'valid', + 'lazyvalue', + 'qdcount', + 'qdarray', + 'answer', + 'bitformat', + 'consume_rdata', + 'consume_string', + 'consume_label', + 'consume_domain', + 'consume_message', + 'errors', + 'warnings', + 'addwarning', + 'adderror', + 'renderbytes', + 'renderstring', + 'components', + 'addcomponents', + 'body', + 'renderdocumentbytes', + 'contenttype', + 'mime_boundary', + 'mime_contenttype', + 'mime_hdrs', + 'addtextpart', + 'addhtmlpart', + 'addattachment', + 'addpart', + 'recipients', + 'pop_capa', + 'pop_debug', + 'pop_err', + 'pop_get', + 'pop_ids', + 'pop_index', + 'pop_log', + 'pop_mode', + 'pop_net', + 'pop_res', + 'pop_server', + 'pop_timeout', + 'pop_token', + 'pop_cmd', + 'user', + 'pass', + 'apop', + 'auth', + 'quit', + 'rset', + 'uidl', + 'retr', + 'dele', + 'noop', + 'capa', + 'stls', + 'authorize', + 'retrieve', + 'headers', + 'uniqueid', + 'capabilities', + 'cancel', + 'results', + 'lasterror', + 'parse_body', + 'parse_boundary', + 'parse_charset', + 'parse_content_disposition', + 'parse_content_transfer_encoding', + 'parse_content_type', + 'parse_hdrs', + 'parse_mode', + 'parse_msg', + 'parse_parts', + 'parse_rawhdrs', + 'rawheaders', + 'content_transfer_encoding', + 'content_disposition', + 'boundary', + 'charset', + 'cc', + 'subject', + 'bcc', + 'pause', + 'continue', + 'touch', + 'refresh', + 'status', + 'queue_status', + 'active_tick', + 'getprefs', + 'initialize', + 'queue_maintenance', + 'queue_messages', + 'content', + 'rectype', + 'requestid', + 'cachedappprefix', + 'cachedroot', + 'cookiesary', + 'fcgireq', + 'fileuploadsary', + 'headersmap', + 'httpauthorization', + 'postparamsary', + 'queryparamsary', + 'documentroot', + 'appprefix', + 'httpconnection', + 'httpcookie', + 'httphost', + 'httpuseragent', + 'httpcachecontrol', + 'httpreferer', + 'httpreferrer', + 'contentlength', + 'pathtranslated', + 'remoteaddr', + 'remoteport', + 'requestmethod', + 'requesturi', + 'scriptfilename', + 'scriptname', + 'scripturi', + 'scripturl', + 'serveraddr', + 'serveradmin', + 'servername', + 'serverport', + 'serverprotocol', + 'serversignature', + 'serversoftware', + 'pathinfo', + 'gatewayinterface', + 'httpaccept', + 'httpacceptencoding', + 'httpacceptlanguage', + 'ishttps', + 'cookies', + 'rawheader', + 'queryparam', + 'postparam', + 'param', + 'queryparams', + 'querystring', + 'postparams', + 'poststring', + 'params', + 'fileuploads', + 'isxhr', + 'reqid', + 'statusmsg', + 'cap', + 'n', + 'proxying', + 'stop', + 'printsimplemsg', + 'handleevalexpired', + 'handlenormalconnection', + 'handledevconnection', + 'splittoprivatedev', + 'getmode', + 'novaluelists', + 'makeurl', + 'choosecolumntype', + 'getdatabasetablepart', + 'getlcapitype', + 'buildquery', + 'getsortfieldspart', + 'endjs', + 'addjs', + 'addjstext', + 'addendjs', + 'addendjstext', + 'addcss', + 'addfavicon', + 'attrs', + 'dtdid', + 'xhtml', + 'code', + 'msg', + 'scripttype', + 'defer', + 'httpequiv', + 'scheme', + 'href', + 'hreflang', + 'linktype', + 'rel', + 'rev', + 'media', + 'declare', + 'classid', + 'codebase', + 'objecttype', + 'codetype', + 'archive', + 'standby', + 'usemap', + 'tabindex', + 'styletype', + 'method', + 'enctype', + 'accept_charset', + 'onsubmit', + 'onreset', + 'accesskey', + 'inputtype', + 'maxlength', + 'for', + 'label', + 'multiple', + 'buff', + 'wroteheaders', + 'pullrequest', + 'pullrawpost', + 'shouldclose', + 'pullurlpost', + 'pullmimepost', + 'pullhttpheader', + 'pulloneheaderline', + 'parseoneheaderline', + 'addoneheaderline', + 'safeexport8bits', + 'writeheader', + 'connhandler', + 'port', + 'connectionhandler', + 'acceptconnections', + 'gotconnection', + 'failnoconnectionhandler', + 'splitconnection', + 'scriptextensions', + 'sendfile', + 'probemimetype', + 'inits', + 'installs', + 'rootmap', + 'install', + 'getappsource', + 'preflight', + 'splituppath', + 'handleresource', + 'handledefinitionhead', + 'handledefinitionbody', + 'handledefinitionresource', + 'execinstalls', + 'execinits', + 'payload', + 'eligiblepath', + 'eligiblepaths', + 'expiresminutes', + 'moddatestr', + 'zips', + 'addzip', + 'getzipfilebytes', + 'resourcedata', + 'zipfile', + 'zipname', + 'zipfilename', + 'rawinvokable', + 'route', + 'setdestination', + 'encodepassword', + 'checkuser', + 'needinitialization', + 'adduser', + 'getuserid', + 'getuser', + 'getuserbykey', + 'removeuser', + 'listusers', + 'listusersbygroup', + 'countusersbygroup', + 'addgroup', + 'updategroup', + 'getgroupid', + 'getgroup', + 'removegroup', + 'listgroups', + 'listgroupsbyuser', + 'addusertogroup', + 'removeuserfromgroup', + 'removeuserfromallgroups', + 'md5hex', + 'usercolumns', + 'groupcolumns', + 'expireminutes', + 'lasttouched', + 'hasexpired', + 'idealinmemory', + 'maxinmemory', + 'nextprune', + 'nextprunedelta', + 'sessionsdump', + 'prune', + 'entry', + 'host', + 'tb', + 'setdefaultstorage', + 'getdefaultstorage', + 'onconvert', + 'send', + 'addsubnode', + 'removesubnode', + 'nodeforpath', + 'jsonfornode', + 'appmessage', + 'appstatus', + 'atends', + 'chunked', + 'cookiesarray', + 'didinclude', + 'errstack', + 'headersarray', + 'includestack', + 'outputencoding', + 'sessionsmap', + 'htmlizestacktrace', + 'respond', + 'sendresponse', + 'sendchunk', + 'makecookieyumyum', + 'includeonce', + 'includelibrary', + 'includelibraryonce', + 'includebytes', + 'addatend', + 'setcookie', + 'addheader', + 'replaceheader', + 'setheaders', + 'rawcontent', + 'redirectto', + 'htmlizestacktracelink', + 'doatbegins', + 'handlelassoappcontent', + 'handlelassoappresponse', + 'domainbody', + 'establisherrorstate', + 'tryfinderrorfile', + 'doatends', + 'dosessions', + 'makenonrelative', + 'pushinclude', + 'popinclude', + 'findinclude', + 'checkdebugging', + 'splitdebuggingthread', + 'matchtriggers', + 'rules', + 'shouldabort', + 'gettrigger', + 'trigger', + 'rule' + ], + 'Lasso 8 Tags': [ + '__char', + '__sync_timestamp__', + '_admin_addgroup', + '_admin_adduser', + '_admin_defaultconnector', + '_admin_defaultconnectornames', + '_admin_defaultdatabase', + '_admin_defaultfield', + '_admin_defaultgroup', + '_admin_defaulthost', + '_admin_defaulttable', + '_admin_defaultuser', + '_admin_deleteconnector', + '_admin_deletedatabase', + '_admin_deletefield', + '_admin_deletegroup', + '_admin_deletehost', + '_admin_deletetable', + '_admin_deleteuser', + '_admin_duplicategroup', + '_admin_internaldatabase', + '_admin_listconnectors', + '_admin_listdatabases', + '_admin_listfields', + '_admin_listgroups', + '_admin_listhosts', + '_admin_listtables', + '_admin_listusers', + '_admin_refreshconnector', + '_admin_refreshsecurity', + '_admin_servicepath', + '_admin_updateconnector', + '_admin_updatedatabase', + '_admin_updatefield', + '_admin_updategroup', + '_admin_updatehost', + '_admin_updatetable', + '_admin_updateuser', + '_chartfx_activation_string', + '_chartfx_getchallengestring', + '_chop_args', + '_chop_mimes', + '_client_addr_old', + '_client_address_old', + '_client_ip_old', + '_database_names', + '_datasource_reload', + '_date_current', + '_date_format', + '_date_msec', + '_date_parse', + '_execution_timelimit', + '_file_chmod', + '_initialize', + '_jdbc_acceptsurl', + '_jdbc_debug', + '_jdbc_deletehost', + '_jdbc_driverclasses', + '_jdbc_driverinfo', + '_jdbc_metainfo', + '_jdbc_propertyinfo', + '_jdbc_setdriver', + '_lasso_param', + '_log_helper', + '_proc_noparam', + '_proc_withparam', + '_recursion_limit', + '_request_param', + '_security_binaryexpiration', + '_security_flushcaches', + '_security_isserialized', + '_security_serialexpiration', + '_srand', + '_strict_literals', + '_substring', + '_xmlrpc_exconverter', + '_xmlrpc_inconverter', + '_xmlrpc_xmlinconverter', + 'abort', + 'accept', + 'action_addinfo', + 'action_addrecord', + 'action_param', + 'action_params', + 'action_setfoundcount', + 'action_setrecordid', + 'action_settotalcount', + 'action_statement', + 'add', + 'addattachment', + 'addattribute', + 'addbarcode', + 'addchapter', + 'addcheckbox', + 'addchild', + 'addcombobox', + 'addcomment', + 'addcontent', + 'addhiddenfield', + 'addhtmlpart', + 'addimage', + 'addjavascript', + 'addlist', + 'addnamespace', + 'addnextsibling', + 'addpage', + 'addparagraph', + 'addparenttype', + 'addpart', + 'addpasswordfield', + 'addphrase', + 'addprevsibling', + 'addradiobutton', + 'addradiogroup', + 'addresetbutton', + 'addsection', + 'addselectlist', + 'addsibling', + 'addsubmitbutton', + 'addtable', + 'addtext', + 'addtextarea', + 'addtextfield', + 'addtextpart', + 'admin_allowedfileroots', + 'admin_changeuser', + 'admin_createuser', + 'admin_currentgroups', + 'admin_currentuserid', + 'admin_currentusername', + 'admin_getpref', + 'admin_groupassignuser', + 'admin_grouplistusers', + 'admin_groupremoveuser', + 'admin_lassoservicepath', + 'admin_listgroups', + 'admin_refreshlicensing', + 'admin_refreshsecurity', + 'admin_reloaddatasource', + 'admin_removepref', + 'admin_setpref', + 'admin_userexists', + 'admin_userlistgroups', + 'alarms', + 'all', + 'and', + 'annotate', + 'answer', + 'append', + 'appendreplacement', + 'appendtail', + 'arc', + 'array', + 'array_iterator', + 'asasync', + 'astype', + 'atbegin', + 'atbottom', + 'atend', + 'atfarleft', + 'atfarright', + 'attop', + 'attributecount', + 'attributes', + 'auth', + 'auth_admin', + 'auth_auth', + 'auth_custom', + 'auth_group', + 'auth_prompt', + 'auth_user', + 'authenticate', + 'authorize', + 'backward', + 'base64', + 'baseuri', + 'bcc', + 'bean', + 'beanproperties', + 'beginswith', + 'bigint', + 'bind', + 'bitand', + 'bitclear', + 'bitflip', + 'bitformat', + 'bitnot', + 'bitor', + 'bitset', + 'bitshiftleft', + 'bitshiftright', + 'bittest', + 'bitxor', + 'blur', + 'body', + 'bom_utf16be', + 'bom_utf16le', + 'bom_utf32be', + 'bom_utf32le', + 'bom_utf8', + 'boolean', + 'boundary', + 'bw', + 'bytes', + 'cache', + 'cache_delete', + 'cache_empty', + 'cache_exists', + 'cache_fetch', + 'cache_internal', + 'cache_maintenance', + 'cache_object', + 'cache_preferences', + 'cache_store', + 'call', + 'cancel', + 'capabilities', + 'case', + 'cc', + 'chardigitvalue', + 'charname', + 'charset', + 'chartfx', + 'chartfx_records', + 'chartfx_serve', + 'chartype', + 'checked', + 'children', + 'choice_list', + 'choice_listitem', + 'choicelistitem', + 'cipher_decrypt', + 'cipher_digest', + 'cipher_encrypt', + 'cipher_hmac', + 'cipher_keylength', + 'cipher_list', + 'circle', + 'click_text', + 'client_addr', + 'client_address', + 'client_authorization', + 'client_browser', + 'client_contentlength', + 'client_contenttype', + 'client_cookielist', + 'client_cookies', + 'client_encoding', + 'client_formmethod', + 'client_getargs', + 'client_getparams', + 'client_headers', + 'client_ip', + 'client_ipfrominteger', + 'client_iptointeger', + 'client_password', + 'client_postargs', + 'client_postparams', + 'client_type', + 'client_url', + 'client_username', + 'close', + 'closepath', + 'closewrite', + 'cn', + 'code', + 'colorspace', + 'column', + 'column_name', + 'column_names', + 'command', + 'comments', + 'compare', + 'compare_beginswith', + 'compare_contains', + 'compare_endswith', + 'compare_equalto', + 'compare_greaterthan', + 'compare_greaterthanorequals', + 'compare_greaterthanorequls', + 'compare_lessthan', + 'compare_lessthanorequals', + 'compare_notbeginswith', + 'compare_notcontains', + 'compare_notendswith', + 'compare_notequalto', + 'compare_notregexp', + 'compare_regexp', + 'compare_strictequalto', + 'compare_strictnotequalto', + 'comparecodepointorder', + 'compile', + 'compiler_removecacheddoc', + 'compiler_setdefaultparserflags', + 'composite', + 'compress', + 'connect', + 'contains', + 'content_body', + 'content_disposition', + 'content_encoding', + 'content_header', + 'content_transfer_encoding', + 'content_type', + 'contents', + 'contrast', + 'convert', + 'cookie', + 'cookie_set', + 'crop', + 'curl_ftp_getfile', + 'curl_ftp_getlisting', + 'curl_ftp_putfile', + 'curl_include_url', + 'currency', + 'curveto', + 'data', + 'database_changecolumn', + 'database_changefield', + 'database_createcolumn', + 'database_createfield', + 'database_createtable', + 'database_fmcontainer', + 'database_hostinfo', + 'database_inline', + 'database_name', + 'database_nameitem', + 'database_names', + 'database_realname', + 'database_removecolumn', + 'database_removefield', + 'database_removetable', + 'database_repeating', + 'database_repeating_valueitem', + 'database_repeatingvalueitem', + 'database_schemanameitem', + 'database_schemanames', + 'database_tablecolumn', + 'database_tablenameitem', + 'database_tablenames', + 'datasource_name', + 'datasource_register', + 'date', + 'date__date_current', + 'date__date_format', + 'date__date_msec', + 'date__date_parse', + 'date_add', + 'date_date', + 'date_difference', + 'date_duration', + 'date_format', + 'date_getcurrentdate', + 'date_getday', + 'date_getdayofweek', + 'date_gethour', + 'date_getlocaltimezone', + 'date_getminute', + 'date_getmonth', + 'date_getsecond', + 'date_gettime', + 'date_getyear', + 'date_gmttolocal', + 'date_localtogmt', + 'date_maximum', + 'date_minimum', + 'date_msec', + 'date_setformat', + 'date_subtract', + 'day', + 'daylights', + 'dayofweek', + 'dayofyear', + 'db_layoutnameitem', + 'db_layoutnames', + 'db_nameitem', + 'db_names', + 'db_tablenameitem', + 'db_tablenames', + 'dbi_column_names', + 'dbi_field_names', + 'decimal', + 'decimal_setglobaldefaultprecision', + 'decode_base64', + 'decode_bheader', + 'decode_hex', + 'decode_html', + 'decode_json', + 'decode_qheader', + 'decode_quotedprintable', + 'decode_quotedprintablebytes', + 'decode_url', + 'decode_xml', + 'decompress', + 'decrement', + 'decrypt_blowfish', + 'decrypt_blowfish2', + 'default', + 'define_atbegin', + 'define_atend', + 'define_constant', + 'define_prototype', + 'define_tag', + 'define_tagp', + 'define_type', + 'define_typep', + 'delete', + 'depth', + 'describe', + 'description', + 'deserialize', + 'detach', + 'detachreference', + 'difference', + 'digit', + 'directory_directorynameitem', + 'directory_lister', + 'directory_nameitem', + 'directorynameitem', + 'dns_default', + 'dns_lookup', + 'dns_response', + 'document', + 'down', + 'drawtext', + 'dst', + 'dump', + 'duration', + 'else', + 'email_batch', + 'email_compose', + 'email_digestchallenge', + 'email_digestresponse', + 'email_extract', + 'email_findemails', + 'email_immediate', + 'email_merge', + 'email_mxerror', + 'email_mxlookup', + 'email_parse', + 'email_pop', + 'email_queue', + 'email_result', + 'email_safeemail', + 'email_send', + 'email_smtp', + 'email_status', + 'email_token', + 'email_translatebreakstocrlf', + 'encode_base64', + 'encode_bheader', + 'encode_break', + 'encode_breaks', + 'encode_crc32', + 'encode_hex', + 'encode_html', + 'encode_htmltoxml', + 'encode_json', + 'encode_qheader', + 'encode_quotedprintable', + 'encode_quotedprintablebytes', + 'encode_set', + 'encode_smart', + 'encode_sql', + 'encode_sql92', + 'encode_stricturl', + 'encode_url', + 'encode_xml', + 'encrypt_blowfish', + 'encrypt_blowfish2', + 'encrypt_crammd5', + 'encrypt_hmac', + 'encrypt_md5', + 'endswith', + 'enhance', + 'eq', + 'equals', + 'error_adderror', + 'error_code', + 'error_code_aborted', + 'error_code_assert', + 'error_code_bof', + 'error_code_connectioninvalid', + 'error_code_couldnotclosefile', + 'error_code_couldnotcreateoropenfile', + 'error_code_couldnotdeletefile', + 'error_code_couldnotdisposememory', + 'error_code_couldnotlockmemory', + 'error_code_couldnotreadfromfile', + 'error_code_couldnotunlockmemory', + 'error_code_couldnotwritetofile', + 'error_code_criterianotmet', + 'error_code_datasourceerror', + 'error_code_directoryfull', + 'error_code_diskfull', + 'error_code_dividebyzero', + 'error_code_eof', + 'error_code_failure', + 'error_code_fieldrestriction', + 'error_code_file', + 'error_code_filealreadyexists', + 'error_code_filecorrupt', + 'error_code_fileinvalid', + 'error_code_fileinvalidaccessmode', + 'error_code_fileisclosed', + 'error_code_fileisopen', + 'error_code_filelocked', + 'error_code_filenotfound', + 'error_code_fileunlocked', + 'error_code_httpfilenotfound', + 'error_code_illegalinstruction', + 'error_code_illegaluseoffrozeninstance', + 'error_code_invaliddatabase', + 'error_code_invalidfilename', + 'error_code_invalidmemoryobject', + 'error_code_invalidparameter', + 'error_code_invalidpassword', + 'error_code_invalidpathname', + 'error_code_invalidusername', + 'error_code_ioerror', + 'error_code_loopaborted', + 'error_code_memory', + 'error_code_network', + 'error_code_nilpointer', + 'error_code_noerr', + 'error_code_nopermission', + 'error_code_outofmemory', + 'error_code_outofstackspace', + 'error_code_overflow', + 'error_code_postconditionfailed', + 'error_code_preconditionfailed', + 'error_code_resnotfound', + 'error_code_resource', + 'error_code_streamreaderror', + 'error_code_streamwriteerror', + 'error_code_syntaxerror', + 'error_code_tagnotfound', + 'error_code_unknownerror', + 'error_code_varnotfound', + 'error_code_volumedoesnotexist', + 'error_code_webactionnotsupported', + 'error_code_webadderror', + 'error_code_webdeleteerror', + 'error_code_webmodulenotfound', + 'error_code_webnosuchobject', + 'error_code_webrepeatingrelatedfield', + 'error_code_webrequiredfieldmissing', + 'error_code_webtimeout', + 'error_code_webupdateerror', + 'error_columnrestriction', + 'error_currenterror', + 'error_databaseconnectionunavailable', + 'error_databasetimeout', + 'error_deleteerror', + 'error_fieldrestriction', + 'error_filenotfound', + 'error_invaliddatabase', + 'error_invalidpassword', + 'error_invalidusername', + 'error_modulenotfound', + 'error_msg', + 'error_msg_aborted', + 'error_msg_assert', + 'error_msg_bof', + 'error_msg_connectioninvalid', + 'error_msg_couldnotclosefile', + 'error_msg_couldnotcreateoropenfile', + 'error_msg_couldnotdeletefile', + 'error_msg_couldnotdisposememory', + 'error_msg_couldnotlockmemory', + 'error_msg_couldnotreadfromfile', + 'error_msg_couldnotunlockmemory', + 'error_msg_couldnotwritetofile', + 'error_msg_criterianotmet', + 'error_msg_datasourceerror', + 'error_msg_directoryfull', + 'error_msg_diskfull', + 'error_msg_dividebyzero', + 'error_msg_eof', + 'error_msg_failure', + 'error_msg_fieldrestriction', + 'error_msg_file', + 'error_msg_filealreadyexists', + 'error_msg_filecorrupt', + 'error_msg_fileinvalid', + 'error_msg_fileinvalidaccessmode', + 'error_msg_fileisclosed', + 'error_msg_fileisopen', + 'error_msg_filelocked', + 'error_msg_filenotfound', + 'error_msg_fileunlocked', + 'error_msg_httpfilenotfound', + 'error_msg_illegalinstruction', + 'error_msg_illegaluseoffrozeninstance', + 'error_msg_invaliddatabase', + 'error_msg_invalidfilename', + 'error_msg_invalidmemoryobject', + 'error_msg_invalidparameter', + 'error_msg_invalidpassword', + 'error_msg_invalidpathname', + 'error_msg_invalidusername', + 'error_msg_ioerror', + 'error_msg_loopaborted', + 'error_msg_memory', + 'error_msg_network', + 'error_msg_nilpointer', + 'error_msg_noerr', + 'error_msg_nopermission', + 'error_msg_outofmemory', + 'error_msg_outofstackspace', + 'error_msg_overflow', + 'error_msg_postconditionfailed', + 'error_msg_preconditionfailed', + 'error_msg_resnotfound', + 'error_msg_resource', + 'error_msg_streamreaderror', + 'error_msg_streamwriteerror', + 'error_msg_syntaxerror', + 'error_msg_tagnotfound', + 'error_msg_unknownerror', + 'error_msg_varnotfound', + 'error_msg_volumedoesnotexist', + 'error_msg_webactionnotsupported', + 'error_msg_webadderror', + 'error_msg_webdeleteerror', + 'error_msg_webmodulenotfound', + 'error_msg_webnosuchobject', + 'error_msg_webrepeatingrelatedfield', + 'error_msg_webrequiredfieldmissing', + 'error_msg_webtimeout', + 'error_msg_webupdateerror', + 'error_noerror', + 'error_nopermission', + 'error_norecordsfound', + 'error_outofmemory', + 'error_pop', + 'error_push', + 'error_reqcolumnmissing', + 'error_reqfieldmissing', + 'error_requiredcolumnmissing', + 'error_requiredfieldmissing', + 'error_reset', + 'error_seterrorcode', + 'error_seterrormessage', + 'error_updateerror', + 'errors', + 'euro', + 'eval', + 'event_schedule', + 'events', + 'ew', + 'execute', + 'export16bits', + 'export32bits', + 'export64bits', + 'export8bits', + 'exportfdf', + 'exportstring', + 'extract', + 'extractone', + 'fail', + 'fail_if', + 'false', + 'field', + 'field_name', + 'field_names', + 'fieldnames', + 'fieldtype', + 'fieldvalue', + 'file', + 'file_autoresolvefullpaths', + 'file_chmod', + 'file_control', + 'file_copy', + 'file_create', + 'file_creationdate', + 'file_currenterror', + 'file_delete', + 'file_exists', + 'file_getlinecount', + 'file_getsize', + 'file_isdirectory', + 'file_listdirectory', + 'file_moddate', + 'file_modechar', + 'file_modeline', + 'file_move', + 'file_openread', + 'file_openreadwrite', + 'file_openwrite', + 'file_openwriteappend', + 'file_openwritetruncate', + 'file_probeeol', + 'file_processuploads', + 'file_read', + 'file_readline', + 'file_rename', + 'file_serve', + 'file_setsize', + 'file_stream', + 'file_streamcopy', + 'file_uploads', + 'file_waitread', + 'file_waittimeout', + 'file_waitwrite', + 'file_write', + 'find', + 'find_soap_ops', + 'findindex', + 'findnamespace', + 'findnamespacebyhref', + 'findpattern', + 'findposition', + 'first', + 'firstchild', + 'fliph', + 'flipv', + 'flush', + 'foldcase', + 'foreach', + 'form_param', + 'format', + 'forward', + 'found_count', + 'freebusies', + 'freezetype', + 'freezevalue', + 'from', + 'ft', + 'ftp_getfile', + 'ftp_getlisting', + 'ftp_putfile', + 'full', + 'fulltype', + 'generatechecksum', + 'get', + 'getabswidth', + 'getalignment', + 'getattribute', + 'getattributenamespace', + 'getbarheight', + 'getbarmultiplier', + 'getbarwidth', + 'getbaseline', + 'getbordercolor', + 'getborderwidth', + 'getcode', + 'getcolor', + 'getcolumncount', + 'getencoding', + 'getface', + 'getfont', + 'getformat', + 'getfullfontname', + 'getheaders', + 'getmargins', + 'getmethod', + 'getnumericvalue', + 'getpadding', + 'getpagenumber', + 'getparams', + 'getproperty', + 'getpsfontname', + 'getrange', + 'getrowcount', + 'getsize', + 'getspacing', + 'getsupportedencodings', + 'gettextalignment', + 'gettextsize', + 'gettype', + 'global', + 'global_defined', + 'global_remove', + 'global_reset', + 'globals', + 'gmt', + 'groupcount', + 'gt', + 'gte', + 'handle', + 'handle_error', + 'hasattribute', + 'haschildren', + 'hasvalue', + 'header', + 'headers', + 'height', + 'histogram', + 'hosttonet16', + 'hosttonet32', + 'hour', + 'html_comment', + 'http_getfile', + 'ical_alarm', + 'ical_attribute', + 'ical_calendar', + 'ical_daylight', + 'ical_event', + 'ical_freebusy', + 'ical_item', + 'ical_journal', + 'ical_parse', + 'ical_standard', + 'ical_timezone', + 'ical_todo', + 'id', + 'if', + 'if_empty', + 'if_false', + 'if_null', + 'if_true', + 'ignorecase', + 'image', + 'image_url', + 'img', + 'import16bits', + 'import32bits', + 'import64bits', + 'import8bits', + 'importfdf', + 'importstring', + 'include', + 'include_cgi', + 'include_currentpath', + 'include_once', + 'include_raw', + 'include_url', + 'increment', + 'inline', + 'input', + 'insert', + 'insertatcurrent', + 'insertfirst', + 'insertfrom', + 'insertlast', + 'insertpage', + 'integer', + 'intersection', + 'invoke', + 'isa', + 'isalnum', + 'isalpha', + 'isbase', + 'iscntrl', + 'isdigit', + 'isemptyelement', + 'islower', + 'isopen', + 'isprint', + 'isspace', + 'istitle', + 'istruetype', + 'isualphabetic', + 'isulowercase', + 'isupper', + 'isuuppercase', + 'isuwhitespace', + 'iswhitespace', + 'iterate', + 'iterator', + 'java', + 'java_bean', + 'javascript', + 'join', + 'journals', + 'json_records', + 'json_rpccall', + 'key', + 'keycolumn_name', + 'keycolumn_value', + 'keyfield_name', + 'keyfield_value', + 'keys', + 'lasso_comment', + 'lasso_currentaction', + 'lasso_datasourceis', + 'lasso_datasourceis4d', + 'lasso_datasourceisfilemaker', + 'lasso_datasourceisfilemaker7', + 'lasso_datasourceisfilemaker9', + 'lasso_datasourceisfilemakersa', + 'lasso_datasourceisjdbc', + 'lasso_datasourceislassomysql', + 'lasso_datasourceismysql', + 'lasso_datasourceisodbc', + 'lasso_datasourceisopenbase', + 'lasso_datasourceisoracle', + 'lasso_datasourceispostgresql', + 'lasso_datasourceisspotlight', + 'lasso_datasourceissqlite', + 'lasso_datasourceissqlserver', + 'lasso_datasourcemodulename', + 'lasso_datatype', + 'lasso_disableondemand', + 'lasso_errorreporting', + 'lasso_executiontimelimit', + 'lasso_parser', + 'lasso_process', + 'lasso_sessionid', + 'lasso_siteid', + 'lasso_siteisrunning', + 'lasso_sitename', + 'lasso_siterestart', + 'lasso_sitestart', + 'lasso_sitestop', + 'lasso_tagexists', + 'lasso_tagmodulename', + 'lasso_uniqueid', + 'lasso_updatecheck', + 'lasso_uptime', + 'lasso_version', + 'lassoapp_create', + 'lassoapp_dump', + 'lassoapp_flattendir', + 'lassoapp_getappdata', + 'lassoapp_link', + 'lassoapp_list', + 'lassoapp_process', + 'lassoapp_unitize', + 'last', + 'lastchild', + 'lasterror', + 'layout_name', + 'ldap', + 'ldap_scope_base', + 'ldap_scope_onelevel', + 'ldap_scope_subtree', + 'ldml', + 'ldml_ldml', + 'left', + 'length', + 'library', + 'library_once', + 'line', + 'link', + 'link_currentaction', + 'link_currentactionparams', + 'link_currentactionurl', + 'link_currentgroup', + 'link_currentgroupparams', + 'link_currentgroupurl', + 'link_currentrecord', + 'link_currentrecordparams', + 'link_currentrecordurl', + 'link_currentsearch', + 'link_currentsearchparams', + 'link_currentsearchurl', + 'link_detail', + 'link_detailparams', + 'link_detailurl', + 'link_firstgroup', + 'link_firstgroupparams', + 'link_firstgroupurl', + 'link_firstrecord', + 'link_firstrecordparams', + 'link_firstrecordurl', + 'link_lastgroup', + 'link_lastgroupparams', + 'link_lastgroupurl', + 'link_lastrecord', + 'link_lastrecordparams', + 'link_lastrecordurl', + 'link_nextgroup', + 'link_nextgroupparams', + 'link_nextgroupurl', + 'link_nextrecord', + 'link_nextrecordparams', + 'link_nextrecordurl', + 'link_params', + 'link_prevgroup', + 'link_prevgroupparams', + 'link_prevgroupurl', + 'link_prevrecord', + 'link_prevrecordparams', + 'link_prevrecordurl', + 'link_setformat', + 'link_url', + 'list', + 'list_additem', + 'list_fromlist', + 'list_fromstring', + 'list_getitem', + 'list_itemcount', + 'list_iterator', + 'list_removeitem', + 'list_replaceitem', + 'list_reverseiterator', + 'list_tostring', + 'listen', + 'literal', + 'ljax_end', + 'ljax_hastarget', + 'ljax_include', + 'ljax_start', + 'ljax_target', + 'local', + 'local_defined', + 'local_remove', + 'local_reset', + 'localaddress', + 'locale_format', + 'localname', + 'locals', + 'lock', + 'log', + 'log_always', + 'log_critical', + 'log_deprecated', + 'log_destination_console', + 'log_destination_database', + 'log_destination_file', + 'log_detail', + 'log_level_critical', + 'log_level_deprecated', + 'log_level_detail', + 'log_level_sql', + 'log_level_warning', + 'log_setdestination', + 'log_sql', + 'log_warning', + 'logicalop_value', + 'logicaloperator_value', + 'lookupnamespace', + 'loop', + 'loop_abort', + 'loop_continue', + 'loop_count', + 'lowercase', + 'lt', + 'lte', + 'magick_image', + 'map', + 'map_iterator', + 'marker', + 'match_comparator', + 'match_notrange', + 'match_notregexp', + 'match_range', + 'match_regexp', + 'matches', + 'matchesstart', + 'matchposition', + 'matchstring', + 'math_abs', + 'math_acos', + 'math_add', + 'math_asin', + 'math_atan', + 'math_atan2', + 'math_ceil', + 'math_converteuro', + 'math_cos', + 'math_div', + 'math_exp', + 'math_floor', + 'math_internal_rand', + 'math_internal_randmax', + 'math_internal_srand', + 'math_ln', + 'math_log', + 'math_log10', + 'math_max', + 'math_min', + 'math_mod', + 'math_mult', + 'math_pow', + 'math_random', + 'math_range', + 'math_rint', + 'math_roman', + 'math_round', + 'math_sin', + 'math_sqrt', + 'math_sub', + 'math_tan', + 'maxrecords_value', + 'memory_session_driver', + 'merge', + 'millisecond', + 'mime_type', + 'minimal', + 'minute', + 'misc__srand', + 'misc_randomnumber', + 'misc_roman', + 'misc_valid_creditcard', + 'mode', + 'modulate', + 'month', + 'moveto', + 'movetoattributenamespace', + 'movetoelement', + 'movetofirstattribute', + 'movetonextattribute', + 'mysql_session_driver', + 'name', + 'named_param', + 'namespace_current', + 'namespace_delimiter', + 'namespace_exists', + 'namespace_file_fullpathexists', + 'namespace_global', + 'namespace_import', + 'namespace_load', + 'namespace_page', + 'namespace_unload', + 'namespace_using', + 'namespaces', + 'namespaceuri', + 'neq', + 'net', + 'net_connectinprogress', + 'net_connectok', + 'net_typessl', + 'net_typessltcp', + 'net_typessludp', + 'net_typetcp', + 'net_typeudp', + 'net_waitread', + 'net_waittimeout', + 'net_waitwrite', + 'nettohost16', + 'nettohost32', + 'newchild', + 'next', + 'nextsibling', + 'no_default_output', + 'nodetype', + 'none', + 'noprocess', + 'not', + 'nrx', + 'nslookup', + 'null', + 'object', + 'once', + 'oneoff', + 'op_logicalvalue', + 'open', + 'operator_logicalvalue', + 'option', + 'or', + 'os_process', + 'output', + 'output_none', + 'padleading', + 'padtrailing', + 'pagecount', + 'pagesize', + 'pair', + 'paraminfo', + 'params', + 'params_up', + 'parent', + 'path', + 'pdf_barcode', + 'pdf_color', + 'pdf_doc', + 'pdf_font', + 'pdf_image', + 'pdf_list', + 'pdf_read', + 'pdf_serve', + 'pdf_table', + 'pdf_text', + 'percent', + 'pixel', + 'portal', + 'position', + 'postcondition', + 'precondition', + 'prefix', + 'prettyprintingnsmap', + 'prettyprintingtypemap', + 'previoussibling', + 'priorityqueue', + 'private', + 'proc_convert', + 'proc_convertbody', + 'proc_convertone', + 'proc_extract', + 'proc_extractone', + 'proc_find', + 'proc_first', + 'proc_foreach', + 'proc_get', + 'proc_join', + 'proc_lasso', + 'proc_last', + 'proc_map_entry', + 'proc_null', + 'proc_regexp', + 'proc_xml', + 'proc_xslt', + 'process', + 'properties', + 'protect', + 'queue', + 'rand', + 'randomnumber', + 'raw', + 'rawheaders', + 'read', + 'readattributevalue', + 'readerror', + 'readfrom', + 'readline', + 'readlock', + 'readstring', + 'readunlock', + 'recid_value', + 'recipients', + 'record_count', + 'recordcount', + 'recordid_value', + 'records', + 'records_array', + 'records_map', + 'rect', + 'redirect_url', + 'refcount', + 'reference', + 'referer', + 'referer_url', + 'referrals', + 'referrer', + 'referrer_url', + 'regexp', + 'remoteaddress', + 'remove', + 'removeall', + 'removeattribute', + 'removechild', + 'removecurrent', + 'removefirst', + 'removelast', + 'removeleading', + 'removenamespace', + 'removetrailing', + 'render', + 'repeating', + 'repeating_valueitem', + 'repeatingvalueitem', + 'repetition', + 'replace', + 'replaceall', + 'replacefirst', + 'replacepattern', + 'replacewith', + 'req_column', + 'req_field', + 'required_column', + 'required_field', + 'reserve', + 'reset', + 'resolutionh', + 'resolutionv', + 'response', + 'response_fileexists', + 'response_filepath', + 'response_localpath', + 'response_path', + 'response_realm', + 'results', + 'resultset', + 'resultset_count', + 'retrieve', + 'return', + 'return_value', + 'returntype', + 'reverse', + 'reverseiterator', + 'right', + 'roman', + 'rotate', + 'row_count', + 'rows', + 'rows_array', + 'run', + 'run_children', + 'rx', + 'save', + 'scale', + 'schema_name', + 'scientific', + 'search', + 'search_args', + 'search_arguments', + 'search_columnitem', + 'search_fielditem', + 'search_operatoritem', + 'search_opitem', + 'search_valueitem', + 'searchfielditem', + 'searchoperatoritem', + 'searchopitem', + 'searchvalueitem', + 'second', + 'select', + 'selected', + 'self', + 'send', + 'serialize', + 'series', + 'server_date', + 'server_day', + 'server_ip', + 'server_name', + 'server_port', + 'server_push', + 'server_siteisrunning', + 'server_sitestart', + 'server_sitestop', + 'server_time', + 'session_abort', + 'session_addoutputfilter', + 'session_addvar', + 'session_addvariable', + 'session_deleteexpired', + 'session_driver', + 'session_end', + 'session_id', + 'session_removevar', + 'session_removevariable', + 'session_result', + 'session_setdriver', + 'session_start', + 'set', + 'set_iterator', + 'set_reverseiterator', + 'setalignment', + 'setbarheight', + 'setbarmultiplier', + 'setbarwidth', + 'setbaseline', + 'setblocking', + 'setbordercolor', + 'setborderwidth', + 'setbytes', + 'setcode', + 'setcolor', + 'setcolorspace', + 'setdatatype', + 'setencoding', + 'setface', + 'setfieldvalue', + 'setfont', + 'setformat', + 'setgeneratechecksum', + 'setheight', + 'setlassodata', + 'setlinewidth', + 'setmarker', + 'setmode', + 'setname', + 'setpadding', + 'setpagenumber', + 'setpagerange', + 'setposition', + 'setproperty', + 'setrange', + 'setshowchecksum', + 'setsize', + 'setspacing', + 'settemplate', + 'settemplatestr', + 'settextalignment', + 'settextdata', + 'settextsize', + 'settype', + 'setunderline', + 'setwidth', + 'setxmldata', + 'sharpen', + 'showchecksum', + 'showcode39startstop', + 'showeanguardbars', + 'shown_count', + 'shown_first', + 'shown_last', + 'signal', + 'signalall', + 'site_atbegin', + 'site_id', + 'site_name', + 'site_restart', + 'size', + 'skiprecords_value', + 'sleep', + 'smooth', + 'soap_convertpartstopairs', + 'soap_definetag', + 'soap_info', + 'soap_lastrequest', + 'soap_lastresponse', + 'soap_stub', + 'sort', + 'sort_args', + 'sort_arguments', + 'sort_columnitem', + 'sort_fielditem', + 'sort_orderitem', + 'sortcolumnitem', + 'sortfielditem', + 'sortorderitem', + 'sortwith', + 'split', + 'sqlite_createdb', + 'sqlite_session_driver', + 'sqlite_setsleepmillis', + 'sqlite_setsleeptries', + 'srand', + 'stack', + 'standards', + 'steal', + 'stock_quote', + 'string', + 'string_charfromname', + 'string_concatenate', + 'string_countfields', + 'string_endswith', + 'string_extract', + 'string_findposition', + 'string_findregexp', + 'string_fordigit', + 'string_getfield', + 'string_getunicodeversion', + 'string_insert', + 'string_isalpha', + 'string_isalphanumeric', + 'string_isdigit', + 'string_ishexdigit', + 'string_islower', + 'string_isnumeric', + 'string_ispunctuation', + 'string_isspace', + 'string_isupper', + 'string_length', + 'string_lowercase', + 'string_remove', + 'string_removeleading', + 'string_removetrailing', + 'string_replace', + 'string_replaceregexp', + 'string_todecimal', + 'string_tointeger', + 'string_uppercase', + 'string_validcharset', + 'subject', + 'substring', + 'subtract', + 'swapbytes', + 'table_name', + 'table_realname', + 'tag', + 'tag_name', + 'tags', + 'tags_find', + 'tags_list', + 'tcp_close', + 'tcp_open', + 'tcp_send', + 'tcp_tcp_close', + 'tcp_tcp_open', + 'tcp_tcp_send', + 'textwidth', + 'thread_abort', + 'thread_atomic', + 'thread_event', + 'thread_exists', + 'thread_getcurrentid', + 'thread_getpriority', + 'thread_info', + 'thread_list', + 'thread_lock', + 'thread_pipe', + 'thread_priority_default', + 'thread_priority_high', + 'thread_priority_low', + 'thread_rwlock', + 'thread_semaphore', + 'thread_setpriority', + 'time', + 'timezones', + 'titlecase', + 'to', + 'todos', + 'token_value', + 'tolower', + 'total_records', + 'totitle', + 'toupper', + 'transform', + 'treemap', + 'treemap_iterator', + 'trim', + 'true', + 'type', + 'unescape', + 'union', + 'uniqueid', + 'unlock', + 'unserialize', + 'up', + 'uppercase', + 'url_rewrite', + 'valid_creditcard', + 'valid_date', + 'valid_email', + 'valid_url', + 'value', + 'value_list', + 'value_listitem', + 'valuelistitem', + 'values', + 'valuetype', + 'var', + 'var_defined', + 'var_remove', + 'var_reset', + 'var_set', + 'variable', + 'variable_defined', + 'variable_set', + 'variables', + 'variant_count', + 'vars', + 'wait', + 'wap_isenabled', + 'wap_maxbuttons', + 'wap_maxcolumns', + 'wap_maxhorzpixels', + 'wap_maxrows', + 'wap_maxvertpixels', + 'waskeyword', + 'week', + 'while', + 'width', + 'write', + 'writelock', + 'writeto', + 'writeunlock', + 'wsdl_extract', + 'wsdl_getbinding', + 'wsdl_getbindingforoperation', + 'wsdl_getbindingoperations', + 'wsdl_getmessagenamed', + 'wsdl_getmessageparts', + 'wsdl_getmessagetriofromporttype', + 'wsdl_getopbodystyle', + 'wsdl_getopbodyuse', + 'wsdl_getoperation', + 'wsdl_getoplocation', + 'wsdl_getopmessagetypes', + 'wsdl_getopsoapaction', + 'wsdl_getportaddress', + 'wsdl_getportsforservice', + 'wsdl_getporttype', + 'wsdl_getporttypeoperation', + 'wsdl_getservicedocumentation', + 'wsdl_getservices', + 'wsdl_gettargetnamespace', + 'wsdl_issoapoperation', + 'wsdl_listoperations', + 'wsdl_maketest', + 'xml', + 'xml_extract', + 'xml_rpc', + 'xml_rpccall', + 'xml_rw', + 'xml_serve', + 'xml_transform', + 'xml_xml', + 'xml_xmlstream', + 'xmllang', + 'xmlschematype', + 'xmlstream', + 'xsd_attribute', + 'xsd_blankarraybase', + 'xsd_blankbase', + 'xsd_buildtype', + 'xsd_cache', + 'xsd_checkcardinality', + 'xsd_continueall', + 'xsd_continueannotation', + 'xsd_continueany', + 'xsd_continueanyattribute', + 'xsd_continueattribute', + 'xsd_continueattributegroup', + 'xsd_continuechoice', + 'xsd_continuecomplexcontent', + 'xsd_continuecomplextype', + 'xsd_continuedocumentation', + 'xsd_continueextension', + 'xsd_continuegroup', + 'xsd_continuekey', + 'xsd_continuelist', + 'xsd_continuerestriction', + 'xsd_continuesequence', + 'xsd_continuesimplecontent', + 'xsd_continuesimpletype', + 'xsd_continueunion', + 'xsd_deserialize', + 'xsd_fullyqualifyname', + 'xsd_generate', + 'xsd_generateblankfromtype', + 'xsd_generateblanksimpletype', + 'xsd_generatetype', + 'xsd_getschematype', + 'xsd_issimpletype', + 'xsd_loadschema', + 'xsd_lookupnamespaceuri', + 'xsd_lookuptype', + 'xsd_processany', + 'xsd_processattribute', + 'xsd_processattributegroup', + 'xsd_processcomplextype', + 'xsd_processelement', + 'xsd_processgroup', + 'xsd_processimport', + 'xsd_processinclude', + 'xsd_processschema', + 'xsd_processsimpletype', + 'xsd_ref', + 'xsd_type', + 'year' + ] +} diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 9cf31b20..ce85350e 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -42,11 +42,13 @@ LEXERS = { 'BooLexer': ('pygments.lexers.dotnet', 'Boo', ('boo',), ('*.boo',), ('text/x-boo',)), 'BrainfuckLexer': ('pygments.lexers.other', 'Brainfuck', ('brainfuck', 'bf'), ('*.bf', '*.b'), ('application/x-brainfuck',)), 'BroLexer': ('pygments.lexers.other', 'Bro', ('bro',), ('*.bro',), ()), + 'BugsLexer': ('pygments.lexers.math', 'BUGS', ('bugs', 'winbugs', 'openbugs'), ('*.bugs',), ()), 'CLexer': ('pygments.lexers.compiled', 'C', ('c',), ('*.c', '*.h', '*.idc'), ('text/x-chdr', 'text/x-csrc')), 'CMakeLexer': ('pygments.lexers.text', 'CMake', ('cmake',), ('*.cmake', 'CMakeLists.txt'), ('text/x-cmake',)), 'CObjdumpLexer': ('pygments.lexers.asm', 'c-objdump', ('c-objdump',), ('*.c-objdump',), ('text/x-c-objdump',)), 'CSharpAspxLexer': ('pygments.lexers.dotnet', 'aspx-cs', ('aspx-cs',), ('*.aspx', '*.asax', '*.ascx', '*.ashx', '*.asmx', '*.axd'), ()), 'CSharpLexer': ('pygments.lexers.dotnet', 'C#', ('csharp', 'c#'), ('*.cs',), ('text/x-csharp',)), + 'CUDALexer': ('pygments.lexers.compiled', 'CUDA', ('cuda', 'cu'), ('*.cu', '*.cuh'), ('text/x-cuda',)), 'Cfengine3Lexer': ('pygments.lexers.other', 'CFEngine3', ('cfengine3', 'cf3'), ('*.cf',), ()), 'CheetahHtmlLexer': ('pygments.lexers.templates', 'HTML+Cheetah', ('html+cheetah', 'html+spitfire'), (), ('text/html+cheetah', 'text/html+spitfire')), 'CheetahJavascriptLexer': ('pygments.lexers.templates', 'JavaScript+Cheetah', ('js+cheetah', 'javascript+cheetah', 'js+spitfire', 'javascript+spitfire'), (), ('application/x-javascript+cheetah', 'text/x-javascript+cheetah', 'text/javascript+cheetah', 'application/x-javascript+spitfire', 'text/x-javascript+spitfire', 'text/javascript+spitfire')), @@ -60,6 +62,7 @@ LEXERS = { 'CoqLexer': ('pygments.lexers.functional', 'Coq', ('coq',), ('*.v',), ('text/x-coq',)), 'CppLexer': ('pygments.lexers.compiled', 'C++', ('cpp', 'c++'), ('*.cpp', '*.hpp', '*.c++', '*.h++', '*.cc', '*.hh', '*.cxx', '*.hxx'), ('text/x-c++hdr', 'text/x-c++src')), 'CppObjdumpLexer': ('pygments.lexers.asm', 'cpp-objdump', ('cpp-objdump', 'c++-objdumb', 'cxx-objdump'), ('*.cpp-objdump', '*.c++-objdump', '*.cxx-objdump'), ('text/x-cpp-objdump',)), + 'CrocLexer': ('pygments.lexers.agile', 'Croc', ('croc',), ('*.croc',), ('text/x-crocsrc',)), 'CssDjangoLexer': ('pygments.lexers.templates', 'CSS+Django/Jinja', ('css+django', 'css+jinja'), (), ('text/css+django', 'text/css+jinja')), 'CssErbLexer': ('pygments.lexers.templates', 'CSS+Ruby', ('css+erb', 'css+ruby'), (), ('text/css+ruby',)), 'CssGenshiLexer': ('pygments.lexers.templates', 'CSS+Genshi Text', ('css+genshitext', 'css+genshi'), (), ('text/css+genshi',)), @@ -123,6 +126,7 @@ LEXERS = { 'IrcLogsLexer': ('pygments.lexers.text', 'IRC logs', ('irc',), ('*.weechatlog',), ('text/x-irclog',)), 'JSONLexer': ('pygments.lexers.web', 'JSON', ('json',), ('*.json',), ('application/json',)), 'JadeLexer': ('pygments.lexers.web', 'Jade', ('jade', 'JADE'), ('*.jade',), ('text/x-jade',)), + 'JagsLexer': ('pygments.lexers.math', 'JAGS', ('jags',), ('*.jags',), ()), 'JavaLexer': ('pygments.lexers.jvm', 'Java', ('java',), ('*.java',), ('text/x-java',)), 'JavascriptDjangoLexer': ('pygments.lexers.templates', 'JavaScript+Django/Jinja', ('js+django', 'javascript+django', 'js+jinja', 'javascript+jinja'), (), ('application/x-javascript+django', 'application/x-javascript+jinja', 'text/x-javascript+django', 'text/x-javascript+jinja', 'text/javascript+django', 'text/javascript+jinja')), 'JavascriptErbLexer': ('pygments.lexers.templates', 'JavaScript+Ruby', ('js+erb', 'javascript+erb', 'js+ruby', 'javascript+ruby'), (), ('application/x-javascript+ruby', 'text/x-javascript+ruby', 'text/javascript+ruby')), @@ -134,8 +138,14 @@ LEXERS = { 'JuliaConsoleLexer': ('pygments.lexers.math', 'Julia console', ('jlcon',), (), ()), 'JuliaLexer': ('pygments.lexers.math', 'Julia', ('julia', 'jl'), ('*.jl',), ('text/x-julia', 'application/x-julia')), 'KotlinLexer': ('pygments.lexers.jvm', 'Kotlin', ('kotlin',), ('*.kt',), ('text/x-kotlin',)), + 'LassoCssLexer': ('pygments.lexers.templates', 'CSS+Lasso', ('css+lasso',), (), ('text/css+lasso',)), + 'LassoHtmlLexer': ('pygments.lexers.templates', 'HTML+Lasso', ('html+lasso',), (), ('text/html+lasso', 'application/x-httpd-lasso', 'application/x-httpd-lasso[89]')), + 'LassoJavascriptLexer': ('pygments.lexers.templates', 'JavaScript+Lasso', ('js+lasso', 'javascript+lasso'), (), ('application/x-javascript+lasso', 'text/x-javascript+lasso', 'text/javascript+lasso')), + 'LassoLexer': ('pygments.lexers.web', 'Lasso', ('lasso', 'lassoscript'), ('*.lasso', '*.lasso[89]'), ('text/x-lasso',)), + 'LassoXmlLexer': ('pygments.lexers.templates', 'XML+Lasso', ('xml+lasso',), (), ('application/xml+lasso',)), 'LighttpdConfLexer': ('pygments.lexers.text', 'Lighttpd configuration file', ('lighty', 'lighttpd'), (), ('text/x-lighttpd-conf',)), 'LiterateHaskellLexer': ('pygments.lexers.functional', 'Literate Haskell', ('lhs', 'literate-haskell'), ('*.lhs',), ('text/x-literate-haskell',)), + 'LiveScriptLexer': ('pygments.lexers.web', 'LiveScript', ('live-script', 'livescript'), ('*.ls',), ('text/livescript',)), 'LlvmLexer': ('pygments.lexers.asm', 'LLVM', ('llvm',), ('*.ll',), ('text/x-llvm',)), 'LogtalkLexer': ('pygments.lexers.other', 'Logtalk', ('logtalk',), ('*.lgt',), ('text/x-logtalk',)), 'LuaLexer': ('pygments.lexers.agile', 'Lua', ('lua',), ('*.lua', '*.wlua'), ('text/x-lua', 'application/x-lua')), @@ -212,6 +222,7 @@ LEXERS = { 'RstLexer': ('pygments.lexers.text', 'reStructuredText', ('rst', 'rest', 'restructuredtext'), ('*.rst', '*.rest'), ('text/x-rst', 'text/prs.fallenstein.rst')), 'RubyConsoleLexer': ('pygments.lexers.agile', 'Ruby irb session', ('rbcon', 'irb'), (), ('text/x-ruby-shellsession',)), 'RubyLexer': ('pygments.lexers.agile', 'Ruby', ('rb', 'ruby', 'duby'), ('*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', '*.rbx', '*.duby'), ('text/x-ruby', 'application/x-ruby')), + 'RustLexer': ('pygments.lexers.compiled', 'Rust', ('rust',), ('*.rs', '*.rc'), ('text/x-rustsrc',)), 'SLexer': ('pygments.lexers.math', 'S', ('splus', 's', 'r'), ('*.S', '*.R'), ('text/S-plus', 'text/S', 'text/R')), 'SMLLexer': ('pygments.lexers.functional', 'Standard ML', ('sml',), ('*.sml', '*.sig', '*.fun'), ('text/x-standardml', 'application/x-standardml')), 'SassLexer': ('pygments.lexers.web', 'Sass', ('sass', 'SASS'), ('*.sass',), ('text/x-sass',)), @@ -228,6 +239,7 @@ LEXERS = { 'SqliteConsoleLexer': ('pygments.lexers.sql', 'sqlite3con', ('sqlite3',), ('*.sqlite3-console',), ('text/x-sqlite3-console',)), 'SquidConfLexer': ('pygments.lexers.text', 'SquidConf', ('squidconf', 'squid.conf', 'squid'), ('squid.conf',), ('text/x-squidconf',)), 'SspLexer': ('pygments.lexers.templates', 'Scalate Server Page', ('ssp',), ('*.ssp',), ('application/x-ssp',)), + 'StanLexer': ('pygments.lexers.math', 'Stan', ('stan',), ('*.stan',), ()), 'SystemVerilogLexer': ('pygments.lexers.hdl', 'systemverilog', ('sv',), ('*.sv', '*.svh'), ('text/x-systemverilog',)), 'TclLexer': ('pygments.lexers.agile', 'Tcl', ('tcl',), ('*.tcl',), ('text/x-tcl', 'text/x-script.tcl', 'application/x-tcl')), 'TcshLexer': ('pygments.lexers.shell', 'Tcsh', ('tcsh', 'csh'), ('*.tcsh', '*.csh'), ('application/x-csh',)), @@ -251,6 +263,7 @@ LEXERS = { 'XmlPhpLexer': ('pygments.lexers.templates', 'XML+PHP', ('xml+php',), (), ('application/xml+php',)), 'XmlSmartyLexer': ('pygments.lexers.templates', 'XML+Smarty', ('xml+smarty',), (), ('application/xml+smarty',)), 'XsltLexer': ('pygments.lexers.web', 'XSLT', ('xslt',), ('*.xsl', '*.xslt'), ('application/xsl+xml', 'application/xslt+xml')), + 'XtendLexer': ('pygments.lexers.jvm', 'Xtend', ('xtend',), ('*.xtend',), ('text/x-xtend',)), 'YamlLexer': ('pygments.lexers.text', 'YAML', ('yaml',), ('*.yaml', '*.yml'), ('text/x-yaml',)), } diff --git a/pygments/lexers/agile.py b/pygments/lexers/agile.py index 024ab8d5..61b05f93 100644 --- a/pygments/lexers/agile.py +++ b/pygments/lexers/agile.py @@ -22,7 +22,7 @@ from pygments import unistring as uni __all__ = ['PythonLexer', 'PythonConsoleLexer', 'PythonTracebackLexer', 'Python3Lexer', 'Python3TracebackLexer', 'RubyLexer', 'RubyConsoleLexer', 'PerlLexer', 'LuaLexer', 'MoonScriptLexer', - 'MiniDLexer', 'IoLexer', 'TclLexer', 'FactorLexer', 'FancyLexer'] + 'CrocLexer', 'MiniDLexer', 'IoLexer', 'TclLexer', 'FactorLexer', 'FancyLexer'] # b/w compatibility from pygments.lexers.functional import SchemeLexer @@ -1189,16 +1189,14 @@ class MoonScriptLexer(LuaLexer): yield index, token, value - -class MiniDLexer(RegexLexer): +class CrocLexer(RegexLexer): """ - For `MiniD <http://www.dsource.org/projects/minid>`_ (a D-like scripting - language) source. + For `Croc <http://jfbillingsley.com/croc>`_ source. """ - name = 'MiniD' - filenames = ['*.md'] - aliases = ['minid'] - mimetypes = ['text/x-minidsrc'] + name = 'Croc' + filenames = ['*.croc'] + aliases = ['croc'] + mimetypes = ['text/x-crocsrc'] tokens = { 'root': [ @@ -1206,35 +1204,32 @@ class MiniDLexer(RegexLexer): (r'\s+', Text), # Comments (r'//(.*?)\n', Comment.Single), - (r'/(\\\n)?[*](.|\n)*?[*](\\\n)?/', Comment.Multiline), - (r'/\+', Comment.Multiline, 'nestedcomment'), + (r'/\*', Comment.Multiline, 'nestedcomment'), # Keywords - (r'(as|assert|break|case|catch|class|continue|coroutine|default' + (r'(as|assert|break|case|catch|class|continue|default' r'|do|else|finally|for|foreach|function|global|namespace' - r'|if|import|in|is|local|module|return|super|switch' + r'|if|import|in|is|local|module|return|scope|super|switch' r'|this|throw|try|vararg|while|with|yield)\b', Keyword), (r'(false|true|null)\b', Keyword.Constant), # FloatLiteral - (r'([0-9][0-9_]*)?\.[0-9_]+([eE][+\-]?[0-9_]+)?', Number.Float), + (r'([0-9][0-9_]*)(?=[.eE])(\.[0-9][0-9_]*)?([eE][+\-]?[0-9_]+)?', Number.Float), # IntegerLiteral # -- Binary - (r'0[Bb][01_]+', Number), - # -- Octal - (r'0[Cc][0-7_]+', Number.Oct), + (r'0[bB][01][01_]*', Number), # -- Hexadecimal - (r'0[xX][0-9a-fA-F_]+', Number.Hex), + (r'0[xX][0-9a-fA-F][0-9a-fA-F_]*', Number.Hex), # -- Decimal - (r'(0|[1-9][0-9_]*)', Number.Integer), + (r'([0-9][0-9_]*)(?![.eE])', Number.Integer), # CharacterLiteral - (r"""'(\\['"?\\abfnrtv]|\\x[0-9a-fA-F]{2}|\\[0-9]{1,3}""" + (r"""'(\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\[0-9]{1,3}""" r"""|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|.)'""", String.Char ), # StringLiteral # -- WysiwygString (r'@"(""|[^"])*"', String), - # -- AlternateWysiwygString - (r'`(``|.)*`', String), + (r'@`(``|[^`])*`', String), + (r"@'(''|[^'])*'", String), # -- DoubleQuotedString (r'"(\\\\|\\"|[^"])*"', String), # Tokens @@ -1247,14 +1242,24 @@ class MiniDLexer(RegexLexer): (r'[a-zA-Z_]\w*', Name), ], 'nestedcomment': [ - (r'[^+/]+', Comment.Multiline), - (r'/\+', Comment.Multiline, '#push'), - (r'\+/', Comment.Multiline, '#pop'), - (r'[+/]', Comment.Multiline), + (r'[^*/]+', Comment.Multiline), + (r'/\*', Comment.Multiline, '#push'), + (r'\*/', Comment.Multiline, '#pop'), + (r'[*/]', Comment.Multiline), ], } +class MiniDLexer(CrocLexer): + """ + For MiniD source. MiniD is now known as Croc. + """ + name = 'MiniD' + filenames = ['*.md'] + aliases = ['minid'] + mimetypes = ['text/x-minidsrc'] + + class IoLexer(RegexLexer): """ For `Io <http://iolanguage.com/>`_ (a small, prototype-based diff --git a/pygments/lexers/compiled.py b/pygments/lexers/compiled.py index 04077ec6..5dd91991 100644 --- a/pygments/lexers/compiled.py +++ b/pygments/lexers/compiled.py @@ -27,7 +27,7 @@ __all__ = ['CLexer', 'CppLexer', 'DLexer', 'DelphiLexer', 'ECLexer', 'DylanLexer', 'ObjectiveCLexer', 'FortranLexer', 'GLShaderLexer', 'PrologLexer', 'CythonLexer', 'ValaLexer', 'OocLexer', 'GoLexer', 'FelixLexer', 'AdaLexer', 'Modula2Lexer', 'BlitzMaxLexer', - 'NimrodLexer', 'FantomLexer'] + 'NimrodLexer', 'FantomLexer', 'RustLexer', 'CUDALexer'] class CLexer(RegexLexer): @@ -2889,3 +2889,138 @@ class FantomLexer(RegexLexer): (r'.', Text) ], } + + +class RustLexer(RegexLexer): + """ + Lexer for Mozilla's Rust programming language. + + *New in Pygments 1.6.* + """ + name = 'Rust' + filenames = ['*.rs', '*.rc'] + aliases = ['rust'] + mimetypes = ['text/x-rustsrc'] + + tokens = { + 'root': [ + # Whitespace and Comments + (r'\n', Text), + (r'\s+', Text), + (r'//(.*?)\n', Comment.Single), + (r'/[*](.|\n)*?[*]/', Comment.Multiline), + + # Keywords + (r'(alt|as|assert|be|break|check|claim|class|const' + r'|cont|copy|crust|do|else|enum|export|fail' + r'|false|fn|for|if|iface|impl|import|let|log' + r'|loop|mod|mut|native|pure|resource|ret|true' + r'|type|unsafe|use|white|note|bind|prove|unchecked' + r'|with|syntax|u8|u16|u32|u64|i8|i16|i32|i64|uint' + r'|int|f32|f64)\b', Keyword), + + # Character Literal + (r"""'(\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}""" + r"""|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|.)'""", + String.Char), + # Binary Literal + (r'0[Bb][01_]+', Number, 'number_lit'), + # Octal Literal + (r'0[0-7_]+', Number.Oct, 'number_lit'), + # Hexadecimal Literal + (r'0[xX][0-9a-fA-F_]+', Number.Hex, 'number_lit'), + # Decimal Literal + (r'[0-9][0-9_]*(\.[0-9_]+[eE][+\-]?' + r'[0-9_]+|\.[0-9_]*|[eE][+\-]?[0-9_]+)?', Number, 'number_lit'), + # String Literal + (r'"', String, 'string'), + + # Operators and Punctuation + (r'[{}()\[\],.;]', Punctuation), + (r'[+\-*/%&|<>^!~@=:?]', Operator), + + # Identifier + (r'[a-zA-Z_$][a-zA-Z0-9_]*', Name), + + # Attributes + (r'#\[', Comment.Preproc, 'attribute['), + (r'#\(', Comment.Preproc, 'attribute('), + # Macros + (r'#[A-Za-z_][A-Za-z0-9_]*\[', Comment.Preproc, 'attribute['), + (r'#[A-Za-z_][A-Za-z0-9_]*\(', Comment.Preproc, 'attribute(') + ], + 'number_lit': { + (r'(([ui](8|16|32|64)?)|(f(32|64)?))?', Keyword, '#pop') + }, + 'string': { + (r'"', String, '#pop'), + (r"""\\['"\\nrt]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}""" + r"""|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}""", String.Escape), + (r'[^\\"]+', String), + (r'\\', String) + }, + 'attribute_common': { + (r'"', String, 'string'), + (r'\[', Comment.Preproc, 'attribute['), + (r'\(', Comment.Preproc, 'attribute('), + }, + 'attribute[': { + include('attribute_common'), + (r'\];?', Comment.Preproc, '#pop'), + (r'[^"\]]+', Comment.Preproc) + }, + 'attribute(': { + include('attribute_common'), + (r'\);?', Comment.Preproc, '#pop'), + (r'[^"\)]+', Comment.Preproc) + } + } + + +class CUDALexer(CLexer): + """ + For NVIDIA `CUDAâ„¢ <http://developer.nvidia.com/category/zone/cuda-zone>`_ + source. + + *New in Pygments 1.6.* + """ + name = 'CUDA' + filenames = ['*.cu', '*.cuh'] + aliases = ['cuda', 'cu'] + mimetypes = ['text/x-cuda'] + + function_qualifiers = ['__device__', '__global__', '__host__', + '__noinline__', '__forceinline__'] + variable_qualifiers = ['__device__', '__constant__', '__shared__', + '__restrict__'] + vector_types = ['char1', 'uchar1', 'char2', 'uchar2', 'char3', 'uchar3', + 'char4', 'uchar4', 'short1', 'ushort1', 'short2', 'ushort2', + 'short3', 'ushort3', 'short4', 'ushort4', 'int1', 'uint1', + 'int2', 'uint2', 'int3', 'uint3', 'int4', 'uint4', 'long1', + 'ulong1', 'long2', 'ulong2', 'long3', 'ulong3', 'long4', + 'ulong4', 'longlong1', 'ulonglong1', 'longlong2', + 'ulonglong2', 'float1', 'float2', 'float3', 'float4', + 'double1', 'double2', 'dim3'] + variables = ['gridDim', 'blockIdx', 'blockDim', 'threadIdx', 'warpSize'] + functions = ['__threadfence_block', '__threadfence', '__threadfence_system', + '__syncthreads', '__syncthreads_count', '__syncthreads_and', + '__syncthreads_or'] + execution_confs = ['<<<', '>>>'] + + def get_tokens_unprocessed(self, text): + for index, token, value in \ + CLexer.get_tokens_unprocessed(self, text): + if token is Name: + if value in self.variable_qualifiers: + token = Keyword.Type + elif value in self.vector_types: + token = Keyword.Type + elif value in self.variables: + token = Name.Builtin + elif value in self.execution_confs: + token = Keyword.Pseudo + elif value in self.function_qualifiers: + token = Keyword.Reserved + elif value in self.functions: + token = Name.Function + yield index, token, value diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py index b56d4582..50f3f4f7 100644 --- a/pygments/lexers/jvm.py +++ b/pygments/lexers/jvm.py @@ -20,7 +20,8 @@ from pygments import unistring as uni __all__ = ['JavaLexer', 'ScalaLexer', 'GosuLexer', 'GosuTemplateLexer', - 'GroovyLexer', 'IokeLexer', 'ClojureLexer', 'KotlinLexer'] + 'GroovyLexer', 'IokeLexer', 'ClojureLexer', 'KotlinLexer', + 'XtendLexer'] class JavaLexer(RegexLexer): @@ -35,9 +36,6 @@ class JavaLexer(RegexLexer): flags = re.MULTILINE | re.DOTALL - #: optional Comment or Whitespace - _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+' - tokens = { 'root': [ # method names @@ -93,9 +91,6 @@ class ScalaLexer(RegexLexer): flags = re.MULTILINE | re.DOTALL - #: optional Comment or Whitespace - _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+' - # don't use raw unicode strings! op = u'[-~\\^\\*!%&\\\\<>\\|+=:/?@\u00a6-\u00a7\u00a9\u00ac\u00ae\u00b0-\u00b1\u00b6\u00d7\u00f7\u03f6\u0482\u0606-\u0608\u060e-\u060f\u06e9\u06fd-\u06fe\u07f6\u09fa\u0b70\u0bf3-\u0bf8\u0bfa\u0c7f\u0cf1-\u0cf2\u0d79\u0f01-\u0f03\u0f13-\u0f17\u0f1a-\u0f1f\u0f34\u0f36\u0f38\u0fbe-\u0fc5\u0fc7-\u0fcf\u109e-\u109f\u1360\u1390-\u1399\u1940\u19e0-\u19ff\u1b61-\u1b6a\u1b74-\u1b7c\u2044\u2052\u207a-\u207c\u208a-\u208c\u2100-\u2101\u2103-\u2106\u2108-\u2109\u2114\u2116-\u2118\u211e-\u2123\u2125\u2127\u2129\u212e\u213a-\u213b\u2140-\u2144\u214a-\u214d\u214f\u2190-\u2328\u232b-\u244a\u249c-\u24e9\u2500-\u2767\u2794-\u27c4\u27c7-\u27e5\u27f0-\u2982\u2999-\u29d7\u29dc-\u29fb\u29fe-\u2b54\u2ce5-\u2cea\u2e80-\u2ffb\u3004\u3012-\u3013\u3020\u3036-\u3037\u303e-\u303f\u3190-\u3191\u3196-\u319f\u31c0-\u31e3\u3200-\u321e\u322a-\u3250\u3260-\u327f\u328a-\u32b0\u32c0-\u33ff\u4dc0-\u4dff\ua490-\ua4c6\ua828-\ua82b\ufb29\ufdfd\ufe62\ufe64-\ufe66\uff0b\uff1c-\uff1e\uff5c\uff5e\uffe2\uffe4\uffe8-\uffee\ufffc-\ufffd]+' @@ -197,9 +192,6 @@ class GosuLexer(RegexLexer): flags = re.MULTILINE | re.DOTALL - #: optional Comment or Whitespace - _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+' - tokens = { 'root': [ # method names @@ -298,9 +290,6 @@ class GroovyLexer(RegexLexer): flags = re.MULTILINE | re.DOTALL - #: optional Comment or Whitespace - _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+' - tokens = { 'root': [ # method names @@ -644,7 +633,7 @@ class ClojureLexer(RegexLexer): (r"\\(.|[a-z]+)", String.Char), # keywords - (r':' + valid_name, String.Symbol), + (r'::?' + valid_name, String.Symbol), # special operators (r'~@|[`\'#^~&]', Operator), @@ -690,9 +679,6 @@ class TeaLangLexer(RegexLexer): flags = re.MULTILINE | re.DOTALL - #: optional Comment or Whitespace - _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+' - tokens = { 'root': [ # method names @@ -845,3 +831,68 @@ class KotlinLexer(RegexLexer): self._tokens = self._all_tokens[level] RegexLexer.__init__(self, **options) + + +class XtendLexer(RegexLexer): + """ + For `Xtend <http://xtend-lang.org/>`_ source code. + + *New in Pygments 1.6.* + """ + + name = 'Xtend' + aliases = ['xtend'] + filenames = ['*.xtend'] + mimetypes = ['text/x-xtend'] + + flags = re.MULTILINE | re.DOTALL + + tokens = { + 'root': [ + # method names + (r'^(\s*(?:[a-zA-Z_][a-zA-Z0-9_\.\[\]]*\s+)+?)' # return arguments + r'([a-zA-Z_$][a-zA-Z0-9_$]*)' # method name + r'(\s*)(\()', # signature start + bygroups(using(this), Name.Function, Text, Operator)), + (r'[^\S\n]+', Text), + (r'//.*?\n', Comment.Single), + (r'/\*.*?\*/', Comment.Multiline), + (r'@[a-zA-Z_][a-zA-Z0-9_\.]*', Name.Decorator), + (r'(assert|break|case|catch|continue|default|do|else|finally|for|' + r'if|goto|instanceof|new|return|switch|this|throw|try|while|IF|' + r'ELSE|ELSEIF|ENDIF|FOR|ENDFOR|SEPARATOR|BEFORE|AFTER)\b', + Keyword), + (r'(def|abstract|const|enum|extends|final|implements|native|private|' + r'protected|public|static|strictfp|super|synchronized|throws|' + r'transient|volatile)\b', Keyword.Declaration), + (r'(boolean|byte|char|double|float|int|long|short|void)\b', + Keyword.Type), + (r'(package)(\s+)', bygroups(Keyword.Namespace, Text)), + (r'(true|false|null)\b', Keyword.Constant), + (r'(class|interface)(\s+)', bygroups(Keyword.Declaration, Text), + 'class'), + (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'), + (r"(''')", String, 'template'), + (ur"(\u00BB)", String, 'template'), + (r'"(\\\\|\\"|[^"])*"', String), + (r"'(\\\\|\\'|[^'])*'", String), + (r'[a-zA-Z_][a-zA-Z0-9_]*:', Name.Label), + (r'[a-zA-Z_\$][a-zA-Z0-9_]*', Name), + (r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator), + (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float), + (r'0x[0-9a-f]+', Number.Hex), + (r'[0-9]+L?', Number.Integer), + (r'\n', Text) + ], + 'class': [ + (r'[a-zA-Z_][a-zA-Z0-9_]*', Name.Class, '#pop') + ], + 'import': [ + (r'[a-zA-Z0-9_.]+\*?', Name.Namespace, '#pop') + ], + 'template': [ + (r"'''", String, '#pop'), + (ur"\u00AB", String, '#pop'), + (r'.', String) + ], + } diff --git a/pygments/lexers/math.py b/pygments/lexers/math.py index db51cd62..877bb40f 100644 --- a/pygments/lexers/math.py +++ b/pygments/lexers/math.py @@ -21,8 +21,7 @@ from pygments.lexers import _scilab_builtins __all__ = ['JuliaLexer', 'JuliaConsoleLexer', 'MuPADLexer', 'MatlabLexer', 'MatlabSessionLexer', 'OctaveLexer', 'ScilabLexer', 'NumPyLexer', - 'RConsoleLexer', 'SLexer'] - + 'RConsoleLexer', 'SLexer', 'JagsLexer', 'BugsLexer', 'StanLexer'] class JuliaLexer(RegexLexer): name = 'Julia' @@ -1011,34 +1010,40 @@ class SLexer(RegexLexer): ], 'valid_name': [ (r'[a-zA-Z][0-9a-zA-Z\._]+', Text), - (r'`.+`', String.Backtick), + # can begin with ., but not if that is followed by a digit + (r'\.[a-zA-Z_][0-9a-zA-Z\._]+', Text), ], 'punctuation': [ - (r'\[|\]|\[\[|\]\]|\$|\(|\)|@|:::?|;|,', Punctuation), + (r'\[{1,2}|\]{1,2}|\(|\)|;|,', Punctuation), ], 'keywords': [ - (r'for(?=\s*\()|while(?=\s*\()|if(?=\s*\()|(?<=\s)else|' - r'(?<=\s)break(?=;|$)|return(?=\s*\()|function(?=\s*\()', + (r'(if|else|for|while|repeat|in|next|break|return|switch|function)' + r'(?![0-9a-zA-Z\._])', Keyword.Reserved) ], 'operators': [ - (r'<-|-|==|<=|>=|<|>|&&|&|!=|\|\|?', Operator), - (r'\*|\+|\^|/|%%|%/%|=', Operator), - (r'%in%|%*%', Operator) + (r'<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\?', Operator), + (r'\*|\+|\^|/|!|%[^%]*%|=|~|\$|@|:{1,3}', Operator) ], 'builtin_symbols': [ - (r'(NULL|NA|TRUE|FALSE|NaN)\b', Keyword.Constant), + (r'(NULL|NA(_(integer|real|complex|character)_)?|' + r'Inf|TRUE|FALSE|NaN|\.\.(\.|[0-9]+))' + r'(?![0-9a-zA-Z\._])', + Keyword.Constant), (r'(T|F)\b', Keyword.Variable), ], 'numbers': [ - (r'(?<![0-9a-zA-Z\)\}\]`\"])(?=\s*)[-\+]?[0-9]+' - r'(\.[0-9]*)?(E[0-9][-\+]?(\.[0-9]*)?)?', Number), - (r'\.[0-9]*(E[0-9][-\+]?(\.[0-9]*)?)?', Number), + # hex number + (r'0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?', Number.Hex), + # decimal number + (r'[+-]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?[Li]?', + Number), ], 'statements': [ include('comments'), # whitespaces (r'\s+', Text), + (r'`.*?`', String.Backtick), (r'\'', String, 'string_squote'), (r'\"', String, 'string_dquote'), include('builtin_symbols'), @@ -1061,12 +1066,314 @@ class SLexer(RegexLexer): # ('\}', Punctuation, '#pop') #], 'string_squote': [ - (r'[^\']*\'', String, '#pop'), + (r'([^\'\\]|\\.)*\'', String, '#pop'), ], 'string_dquote': [ - (r'[^\"]*\"', String, '#pop'), + (r'([^"\\]|\\.)*"', String, '#pop'), ], } def analyse_text(text): return '<-' in text + + +class BugsLexer(RegexLexer): + """ + Pygments Lexer for Stan models. + + *New in Pygments 1.6.* + """ + + name = 'BUGS' + aliases = ['bugs', 'winbugs', 'openbugs'] + filenames = ['*.bugs'] + + _FUNCTIONS = [ + # Scalar functions + 'abs', 'arccos', 'arccosh', 'arcsin', 'arcsinh', 'arctan', 'arctanh', + 'cloglog', 'cos', 'cosh', 'cumulative', 'cut', 'density', 'deviance', + 'equals', 'expr', 'gammap', 'ilogit', 'icloglog', 'integral', 'log', + 'logfact', 'loggam', 'logit', 'max', 'min', 'phi', 'post.p.value', + 'pow', 'prior.p.value', 'probit', 'replicate.post', 'replicate.prior', + 'round', 'sin', 'sinh', 'solution', 'sqrt', 'step', 'tan', 'tanh', + 'trunc', + # Vector functions + 'inprod', 'interp.lin', 'inverse', 'logdet', 'mean', 'eigen.vals', + 'ode', 'prod', 'p.valueM', 'rank', 'ranked', 'replicate.postM', + 'sd', 'sort', 'sum', + ## Special + 'D', 'I', 'F', 'T', 'C'] + """ OpenBUGS built-in functions + + From http://www.openbugs.info/Manuals/ModelSpecification.html#ContentsAII + + This also includes + + - T, C, I : Truncation and censoring. ``T`` and ``C`` are in OpenBUGS. ``I`` in WinBUGS. + - D : ODE + - F : Functional http://www.openbugs.info/Examples/Functionals.html + + """ + + _DISTRIBUTIONS = ['dbern', 'dbin', 'dcat', 'dnegbin', 'dpois', + 'dhyper', 'dbeta', 'dchisqr', 'ddexp', 'dexp', + 'dflat', 'dgamma', 'dgev', 'df', 'dggamma', 'dgpar', + 'dloglik', 'dlnorm', 'dlogis', 'dnorm', 'dpar', + 'dt', 'dunif', 'dweib', 'dmulti', 'ddirch', 'dmnorm', + 'dmt', 'dwish'] + """ OpenBUGS built-in distributions + + Functions From http://www.openbugs.info/Manuals/ModelSpecification.html#ContentsAI + """ + + + tokens = { + 'whitespace' : [ + (r"\s+", Text), + ], + 'comments' : [ + # Comments + (r'#.*$', Comment.Single), + ], + 'root': [ + # Comments + include('comments'), + include('whitespace'), + # Block start + (r'(?s)(model)(\s|\n)+({)', + bygroups(Keyword.Namespace, Text, Punctuation), 'block') + ], + 'block' : [ + include('comments'), + include('whitespace'), + # Reserved Words + (r'(for|in)\b', Keyword.Reserved), + # Built-in Functions + (r'(%s)(?=\s*\()' + % r'|'.join(_FUNCTIONS + _DISTRIBUTIONS), + Name.Builtin), + # Regular variable names + (r'[A-Za-z][A-Za-z0-9_.]*', Name), + # Number Literals + (r'[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?', Number), + # Punctuation + (r'(\[|\]|\(|\)|:|,)', Punctuation), + # Assignment operators + # SLexer makes these tokens Operators. + (r'(<-|~)', Operator), + # Infix and prefix operators + (r'(\+|-|\*|/)', Operator), + # Block + (r'{', Punctuation, '#push'), + (r'}', Punctuation, '#pop'), + # Other + (r';', Punctuation), + ] + } + + +class JagsLexer(RegexLexer): + """ + Pygments Lexer for JAGS. + + *New in Pygments 1.6.* + """ + + name = 'JAGS' + aliases = ['jags'] + filenames = ['*.jags'] + + ## JAGS + _FUNCTIONS = [ + 'abs', 'arccos', 'arccosh', 'arcsin', 'arcsinh', 'arctan', 'arctanh', + 'cos', 'cosh', 'cloglog', + 'equals', 'exp', 'icloglog', 'ifelse', 'ilogit', 'log', 'logfact', + 'loggam', 'logit', 'phi', 'pow', 'probit', 'round', 'sin', 'sinh', + 'sqrt', 'step', 'tan', 'tanh', 'trunc', 'inprod', 'interp.lin', + 'logdet', 'max', 'mean', 'min', 'prod', 'sum', 'sd', 'inverse', 'rank', 'sort', 't', + 'acos', 'acosh', 'asin', 'asinh', 'atan', + # Truncation/Censoring (should I include) + 'T', 'I'] + # Distributions with density, probability and quartile functions + _DISTRIBUTIONS = ['[dpq]%s' % x for x in + ['bern', 'beta', 'dchiqsqr', 'ddexp', 'dexp', + 'df', 'gamma', 'gen.gamma', 'logis', 'lnorm', + 'negbin', 'nchisqr', 'norm', 'par', 'pois', 'weib']] + # Other distributions without density and probability + _OTHER_DISTRIBUTIONS = [ + 'dt', 'dunif', 'dbetabin', 'dbern', 'dbin', 'dcat', 'dhyper', + 'ddirch', 'dmnorm', 'dwish', 'dmt', 'dmulti', 'dbinom', 'dchisq', + 'dnbinom', 'dweibull', 'ddirich'] + + tokens = { + 'whitespace' : [ + (r"\s+", Text), + ], + 'names' : [ + # Regular variable names + (r'\b[A-Za-z][A-Za-z0-9_.]*\b', Name), + ], + 'comments' : [ + # do not use stateful comments + (r'(?s)/\*.*?\*/', Comment.Multiline), + # Comments + (r'#.*$', Comment.Single), + ], + 'root': [ + # Comments + include('comments'), + include('whitespace'), + # Block start + (r'(?s)(model|data)(\s|\n)+({)', + bygroups(Keyword.Namespace, Text, Punctuation), 'block'), + # Variable declaration (TODO: improve) + (r'var\b', Keyword.Declaration, 'var') + ], + 'statements': [ + include('comments'), + include('whitespace'), + # Reserved Words + (r'(for|in)\b', Keyword.Reserved), + # Builtins + # Need to use lookahead because . is a valid char + (r'(%s)(?=\s*\()' % r'|'.join(_FUNCTIONS + + _DISTRIBUTIONS + + _OTHER_DISTRIBUTIONS), + Name.Builtin), + # Names + include('names'), + # Number Literals + (r'[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?', Number), + (r'(\[|\]|\(|\)|:|,)', Punctuation), + # Assignment operators + (r'(<-|~)', Operator), + # # JAGS includes many more than OpenBUGS + # |/|\|\||\&\&|>=?|<=?|[=!]?=|!|%.*?%|^)' + (r'(\+|-|\*|\/|\|\|[&]{2}|[<>=]=?|\^|%.*?%)', Operator), + ], + 'block' : [ + include('statements'), + (r';', Punctuation), + (r'{', Punctuation, '#push'), + (r'}', Punctuation, '#pop'), + ], + 'var' : [ + include('statements'), + (r';', Punctuation, '#pop'), + ] + } + + +class StanLexer(RegexLexer): + """ + Pygments Lexer for Stan models. + + *New in Pygments 1.6.* + """ + + name = 'Stan' + aliases = ['stan'] + filenames = ['*.stan'] + + _RESERVED = ('for', 'in', 'while', 'repeat', 'until', 'if', + 'then', 'else', 'true', 'false', 'T') + + _TYPES = ('int', 'real', 'vector', 'simplex', 'ordered', 'row_vector', + 'matrix', 'corr_matrix', 'cov_matrix') + + # STAN 1.0 Manual, Chapter 20 + _CONSTANTS = ['pi', 'e', 'sqrt2', 'log2', 'log10', 'nan', 'infinity', + 'epsilon', 'negative_epsilon'] + _FUNCTIONS = ['abs', 'int_step', 'min', 'max', + 'if_else', 'step', + 'fabs', 'fdim', + 'fmin', 'fmax', + 'fmod', + 'floor', 'ceil', 'round', 'trunc', + 'sqrt', 'cbrt', 'square', 'exp', 'exp2', 'expm1', + 'log', 'log2', 'log10', 'pow', 'logit', 'inv_logit', + 'inv_cloglog', 'hypot', 'cos', 'sin', 'tan', 'acos', + 'asin', 'atan', 'atan2', 'cosh', 'sinh', 'tanh', + 'acosh', 'asinh', 'atanh', 'erf', 'erfc', 'Phi', + 'log_loss', 'tgamma', 'lgamma', 'lmgamma', 'lbeta', + 'binomial_coefficient_log', + 'fma', 'multiply_log', 'log1p', 'log1m', 'log1p_exp', + 'log_sum_exp', + 'rows', 'cols', + 'dot_product', 'prod', 'mean', 'variance', 'sd', + 'diagonal', 'diag_matrix', 'col', 'row', + 'softmax', 'trace', 'determinant', 'inverse', 'eigenvalue', + 'eigenvalues_sym', 'cholesky', 'singular_values', + '(log)?normal_p', 'exponential_p', 'gamma_p', 'weibull_p'] + _DISTRIBUTIONS = ['bernoulli', 'bernoulli_logit', 'binomial', + 'beta_binomial', 'hypergeometric', 'categorical', + 'ordered_logistic', 'negative_binomial', 'poisson', + 'multinomial', 'normal', 'student_t', + 'cauchy', 'double_exponential', 'logistic', + 'lognormal', 'chi_square', 'inv_chi_square', + 'scaled_inv_chi_square', 'exponential', + 'gamma', 'inv_gamma', 'weibull', 'pareto', + 'beta', 'uniform', 'dirichlet', 'multi_normal', + 'multi_normal_cholesky', 'multi_student_t', + 'wishart', 'inv_wishart', 'lkj_cov', + 'lkj_corr_cholesky'] + + tokens = { + 'whitespace' : [ + (r"\s+", Text), + ], + 'comments' : [ + # do not use stateful comments + (r'(?s)/\*.*?\*/', Comment.Multiline), + # Comments + (r'(//|#).*$', Comment.Single), + ], + 'root': [ + # Comments + include('comments'), + # block start + include('whitespace'), + # Block start + (r'(?s)(%s)(\s*)({)' % + r'|'.join(('data', r'transformed\s+?data', + 'parameters', r'transformed\s+parameters', + 'model', r'generated\s+quantities')), + bygroups(Keyword.Namespace, Text, Punctuation), 'block') + ], + 'block' : [ + include('comments'), + include('whitespace'), + # Reserved Words + (r'(%s)\b' % r'|'.join(_RESERVED), Keyword.Reserved), + # Data types + (r'(%s)\b' % r'|'.join(_TYPES), Keyword.Type), + # Punctuation + (r"[;:,\[\]()]", Punctuation), + # Builtin + (r'(%s)(?=\s*\()' + % r'|'.join(_FUNCTIONS + + _DISTRIBUTIONS + + ['%s_log' % x for x in _DISTRIBUTIONS]), + Name.Builtin), + (r'(%s)(?=\s*\()' + % r'|'.join(_CONSTANTS), + Keyword.Constant), + # Special names ending in __, like lp__ + (r'\b[A-Za-z][A-Za-z0-9_]*__\b', Name.Builtin.Pseudo), + # Regular variable names + (r'\b[A-Za-z][A-Za-z0-9_]*\b', Name), + # Real Literals + (r'-?[0-9]+(\.[0-9]+)?[eE]-?[0-9]+', Number.Float), + (r'-?[0-9]*\.[0-9]*', Number.Float), + # Integer Literals + (r'-?[0-9]+', Number.Integer), + # Assignment operators + # SLexer makes these tokens Operators. + (r'(<-|~)', Operator), + # Infix and prefix operators + (r"(\+|-|\.?\*|\.?/|\\|')", Operator), + # Block + (r'{', Punctuation, '#push'), + (r'}', Punctuation, '#pop'), + ] + } diff --git a/pygments/lexers/other.py b/pygments/lexers/other.py index 689672e6..c7899f10 100644 --- a/pygments/lexers/other.py +++ b/pygments/lexers/other.py @@ -1371,6 +1371,11 @@ class RebolLexer(RegexLexer): tokens = { 'root': [ + (r'REBOL', Generic.Strong, 'script'), + (r'R', Comment), + (r'[^R]+', Comment), + ], + 'script': [ (r'\s+', Text), (r'#"', String.Char, 'char'), (r'#{[0-9a-fA-F]*}', Number.Hex), diff --git a/pygments/lexers/templates.py b/pygments/lexers/templates.py index c154eb0f..6c55edbf 100644 --- a/pygments/lexers/templates.py +++ b/pygments/lexers/templates.py @@ -12,7 +12,7 @@ import re from pygments.lexers.web import \ - PhpLexer, HtmlLexer, XmlLexer, JavascriptLexer, CssLexer + PhpLexer, HtmlLexer, XmlLexer, JavascriptLexer, CssLexer, LassoLexer from pygments.lexers.agile import PythonLexer, PerlLexer from pygments.lexers.compiled import JavaLexer from pygments.lexers.jvm import TeaLangLexer @@ -37,7 +37,8 @@ __all__ = ['HtmlPhpLexer', 'XmlPhpLexer', 'CssPhpLexer', 'CheetahXmlLexer', 'CheetahJavascriptLexer', 'EvoqueLexer', 'EvoqueHtmlLexer', 'EvoqueXmlLexer', 'ColdfusionLexer', 'ColdfusionHtmlLexer', 'VelocityLexer', 'VelocityHtmlLexer', - 'VelocityXmlLexer', 'SspLexer', 'TeaTemplateLexer'] + 'VelocityXmlLexer', 'SspLexer', 'TeaTemplateLexer', 'LassoHtmlLexer', + 'LassoXmlLexer', 'LassoCssLexer', 'LassoJavascriptLexer'] class ErbLexer(Lexer): @@ -1629,3 +1630,104 @@ class TeaTemplateLexer(DelegatingLexer): if '<%' in text and '%>' in text: rv += 0.1 return rv + + +class LassoHtmlLexer(DelegatingLexer): + """ + Subclass of the `LassoLexer` which highlights unhandled data with the + `HtmlLexer`. + + Nested JavaScript and CSS is also highlighted. + """ + + name = 'HTML+Lasso' + aliases = ['html+lasso'] + alias_filenames = ['*.html', '*.htm', '*.xhtml', '*.lasso', '*.lasso[89]', + '*.incl', '*.inc', '*.las'] + mimetypes = ['text/html+lasso', + 'application/x-httpd-lasso', + 'application/x-httpd-lasso[89]'] + + def __init__(self, **options): + options['requiredelimiters'] = True + super(LassoHtmlLexer, self).__init__(HtmlLexer, LassoLexer, **options) + + def analyse_text(text): + rv = LassoLexer.analyse_text(text) + if re.search(r'<\w+>', text, re.I): + rv += 0.2 + if html_doctype_matches(text): + rv += 0.5 + return rv + + +class LassoXmlLexer(DelegatingLexer): + """ + Subclass of the `LassoLexer` which highlights unhandled data with the + `XmlLexer`. + """ + + name = 'XML+Lasso' + aliases = ['xml+lasso'] + alias_filenames = ['*.xml', '*.lasso', '*.lasso[89]', + '*.incl', '*.inc', '*.las'] + mimetypes = ['application/xml+lasso'] + + def __init__(self, **options): + options['requiredelimiters'] = True + super(LassoXmlLexer, self).__init__(XmlLexer, LassoLexer, **options) + + def analyse_text(text): + rv = LassoLexer.analyse_text(text) + if looks_like_xml(text): + rv += 0.5 + return rv + + +class LassoCssLexer(DelegatingLexer): + """ + Subclass of the `LassoLexer` which highlights unhandled data with the + `CssLexer`. + """ + + name = 'CSS+Lasso' + aliases = ['css+lasso'] + alias_filenames = ['*.css'] + mimetypes = ['text/css+lasso'] + + def __init__(self, **options): + options['requiredelimiters'] = True + super(LassoCssLexer, self).__init__(CssLexer, LassoLexer, **options) + + def analyse_text(text): + rv = LassoLexer.analyse_text(text) + if re.search(r'\w+:.+;', text): + rv += 0.1 + if 'padding:' in text: + rv += 0.1 + return rv + + +class LassoJavascriptLexer(DelegatingLexer): + """ + Subclass of the `LassoLexer` which highlights unhandled data with the + `JavascriptLexer`. + """ + + name = 'JavaScript+Lasso' + aliases = ['js+lasso', 'javascript+lasso'] + alias_filenames = ['*.js'] + mimetypes = ['application/x-javascript+lasso', + 'text/x-javascript+lasso', + 'text/javascript+lasso'] + + def __init__(self, **options): + options['requiredelimiters'] = True + super(LassoJavascriptLexer, self).__init__(JavascriptLexer, LassoLexer, + **options) + + def analyse_text(text): + rv = LassoLexer.analyse_text(text) + if 'function' in text: + rv += 0.2 + return rv diff --git a/pygments/lexers/text.py b/pygments/lexers/text.py index 130ddba9..ec69337c 100644 --- a/pygments/lexers/text.py +++ b/pygments/lexers/text.py @@ -1643,6 +1643,11 @@ class HttpLexer(RegexLexer): yield match.start(5), Literal, match.group(5) yield match.start(6), Text, match.group(6) + def continuous_header_callback(self, match): + yield match.start(1), Text, match.group(1) + yield match.start(2), Literal, match.group(2) + yield match.start(3), Text, match.group(3) + def content_callback(self, match): content_type = getattr(self, 'content_type', None) content = match.group() @@ -1673,6 +1678,7 @@ class HttpLexer(RegexLexer): ], 'headers': [ (r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback), + (r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback), (r'\r?\n', Text, 'content') ], 'content': [ diff --git a/pygments/lexers/web.py b/pygments/lexers/web.py index 5ac56c19..6fb286c0 100644 --- a/pygments/lexers/web.py +++ b/pygments/lexers/web.py @@ -25,8 +25,9 @@ from pygments.lexers.compiled import ScalaLexer __all__ = ['HtmlLexer', 'XmlLexer', 'JavascriptLexer', 'JSONLexer', 'CssLexer', 'PhpLexer', 'ActionScriptLexer', 'XsltLexer', 'ActionScript3Lexer', 'MxmlLexer', 'HaxeLexer', 'HamlLexer', 'SassLexer', 'ScssLexer', - 'ObjectiveJLexer', 'CoffeeScriptLexer', 'DuelLexer', 'ScamlLexer', - 'JadeLexer', 'XQueryLexer', 'DtdLexer', 'DartLexer'] + 'ObjectiveJLexer', 'CoffeeScriptLexer', 'LiveScriptLexer', + 'DuelLexer', 'ScamlLexer', 'JadeLexer', 'XQueryLexer', + 'DtdLexer', 'DartLexer', 'LassoLexer'] class JavascriptLexer(RegexLexer): @@ -103,10 +104,10 @@ class JSONLexer(RegexLexer): # integer part of a number int_part = r'-?(0|[1-9]\d*)' - + # fractional part of a number frac_part = r'\.\d+' - + # exponential part of a number exp_part = r'[eE](\+|-)?\d+' @@ -1797,8 +1798,8 @@ class CoffeeScriptLexer(RegexLexer): tokens = { 'commentsandwhitespace': [ (r'\s+', Text), - (r'###.*?###', Comment.Multiline), - (r'#.*?\n', Comment.Single), + (r'###[^#].*?###', Comment.Multiline), + (r'#(?!##[^#]).*?\n', Comment.Single), ], 'multilineregex': [ include('commentsandwhitespace'), @@ -1817,28 +1818,32 @@ class CoffeeScriptLexer(RegexLexer): # this next expr leads to infinite loops root -> slashstartsregex #(r'^(?=\s|/|<!--)', Text, 'slashstartsregex'), include('commentsandwhitespace'), - (r'\+\+|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|\?|:|=|' - r'\|\||\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&\|\^/])=?', + (r'\+\+|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|\?|:|' + r'\|\||\\(?=\n)|(<<|>>>?|==?|!=?|' + r'=(?!>)|-(?!>)|[<>+*`%&\|\^/])=?', Operator, 'slashstartsregex'), - (r'\([^()]*\)\s*->', Name.Function), + (r'(?:\([^()]+\))?\s*[=-]>', Name.Function), (r'[{(\[;,]', Punctuation, 'slashstartsregex'), (r'[})\].]', Punctuation), - (r'(for|in|of|while|break|return|continue|switch|when|then|if|else|' + (r'(?<![\.\$])(for|own|in|of|while|until|' + r'loop|break|return|continue|' + r'switch|when|then|if|unless|else|' r'throw|try|catch|finally|new|delete|typeof|instanceof|super|' r'extends|this|class|by)\b', Keyword, 'slashstartsregex'), - (r'(true|false|yes|no|on|off|null|NaN|Infinity|undefined)\b', + (r'(?<![\.\$])(true|false|yes|no|on|off|null|' + r'NaN|Infinity|undefined)\b', Keyword.Constant), (r'(Array|Boolean|Date|Error|Function|Math|netscape|' r'Number|Object|Packages|RegExp|String|sun|decodeURI|' r'decodeURIComponent|encodeURI|encodeURIComponent|' r'eval|isFinite|isNaN|parseFloat|parseInt|document|window)\b', Name.Builtin), - (r'[$a-zA-Z_][a-zA-Z0-9_\.:]*\s*[:=]\s', Name.Variable, + (r'[$a-zA-Z_][a-zA-Z0-9_\.:\$]*\s*[:=]\s', Name.Variable, 'slashstartsregex'), - (r'@[$a-zA-Z_][a-zA-Z0-9_\.:]*\s*[:=]\s', Name.Variable.Instance, + (r'@[$a-zA-Z_][a-zA-Z0-9_\.:\$]*\s*[:=]\s', Name.Variable.Instance, 'slashstartsregex'), (r'@', Name.Other, 'slashstartsregex'), - (r'@?[$a-zA-Z_][a-zA-Z0-9_]*', Name.Other, 'slashstartsregex'), + (r'@?[$a-zA-Z_][a-zA-Z0-9_\$]*', Name.Other, 'slashstartsregex'), (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float), (r'0x[0-9a-fA-F]+', Number.Hex), (r'[0-9]+', Number.Integer), @@ -1880,6 +1885,118 @@ class CoffeeScriptLexer(RegexLexer): ], } + +class LiveScriptLexer(RegexLexer): + """ + For `LiveScript`_ source code. + + .. _LiveScript: http://gkz.github.com/LiveScript/ + + New in Pygments 1.6. + """ + + name = 'LiveScript' + aliases = ['live-script', 'livescript'] + filenames = ['*.ls'] + mimetypes = ['text/livescript'] + + flags = re.DOTALL + tokens = { + 'commentsandwhitespace': [ + (r'\s+', Text), + (r'/\*.*?\*/', Comment.Multiline), + (r'#.*?\n', Comment.Single), + ], + 'multilineregex': [ + include('commentsandwhitespace'), + (r'//([gim]+\b|\B)', String.Regex, '#pop'), + (r'/', String.Regex), + (r'[^/#]+', String.Regex) + ], + 'slashstartsregex': [ + include('commentsandwhitespace'), + (r'//', String.Regex, ('#pop', 'multilineregex')), + (r'/(?! )(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/' + r'([gim]+\b|\B)', String.Regex, '#pop'), + (r'', Text, '#pop'), + ], + 'root': [ + # this next expr leads to infinite loops root -> slashstartsregex + #(r'^(?=\s|/|<!--)', Text, 'slashstartsregex'), + include('commentsandwhitespace'), + (r'(?:\([^()]+\))?[ ]*[~-]{1,2}>|' + r'(?:\(?[^()\n]+\)?)?[ ]*<[~-]{1,2}', Name.Function), + (r'\+\+|&&|(?<![\.\$])\b(?:and|x?or|is|isnt|not)\b|\?|:|=|' + r'\|\||\\(?=\n)|(<<|>>>?|==?|!=?|' + r'~(?!\~?>)|-(?!\-?>)|<(?!\[)|(?<!\])>|' + r'[+*`%&\|\^/])=?', + Operator, 'slashstartsregex'), + (r'[{(\[;,]', Punctuation, 'slashstartsregex'), + (r'[})\].]', Punctuation), + (r'(?<![\.\$])(for|own|in|of|while|until|loop|break|' + r'return|continue|switch|when|then|if|unless|else|' + r'throw|try|catch|finally|new|delete|typeof|instanceof|super|' + r'extends|this|class|by|const|var|to|til)\b', Keyword, + 'slashstartsregex'), + (r'(?<![\.\$])(true|false|yes|no|on|off|' + r'null|NaN|Infinity|undefined|void)\b', + Keyword.Constant), + (r'(Array|Boolean|Date|Error|Function|Math|netscape|' + r'Number|Object|Packages|RegExp|String|sun|decodeURI|' + r'decodeURIComponent|encodeURI|encodeURIComponent|' + r'eval|isFinite|isNaN|parseFloat|parseInt|document|window)\b', + Name.Builtin), + (r'[$a-zA-Z_][a-zA-Z0-9_\.\-:\$]*\s*[:=]\s', Name.Variable, + 'slashstartsregex'), + (r'@[$a-zA-Z_][a-zA-Z0-9_\.\-:\$]*\s*[:=]\s', Name.Variable.Instance, + 'slashstartsregex'), + (r'@', Name.Other, 'slashstartsregex'), + (r'@?[$a-zA-Z_][a-zA-Z0-9_\-]*', Name.Other, 'slashstartsregex'), + (r'[0-9]+\.[0-9]+([eE][0-9]+)?[fd]?(?:[a-zA-Z_]+)?', Number.Float), + (r'[0-9]+(~[0-9a-z]+)?(?:[a-zA-Z_]+)?', Number.Integer), + ('"""', String, 'tdqs'), + ("'''", String, 'tsqs'), + ('"', String, 'dqs'), + ("'", String, 'sqs'), + (r'\\[\w$-]+', String), + (r'<\[.*\]>', String), + ], + 'strings': [ + (r'[^#\\\'"]+', String), + # note that all coffee script strings are multi-line. + # hashmarks, quotes and backslashes must be parsed one at a time + ], + 'interpoling_string' : [ + (r'}', String.Interpol, "#pop"), + include('root') + ], + 'dqs': [ + (r'"', String, '#pop'), + (r'\\.|\'', String), # double-quoted string don't need ' escapes + (r'#{', String.Interpol, "interpoling_string"), + (r'#', String), + include('strings') + ], + 'sqs': [ + (r"'", String, '#pop'), + (r'#|\\.|"', String), # single quoted strings don't need " escapses + include('strings') + ], + 'tdqs': [ + (r'"""', String, '#pop'), + (r'\\.|\'|"', String), # no need to escape quotes in triple-string + (r'#{', String.Interpol, "interpoling_string"), + (r'#', String), + include('strings'), + ], + 'tsqs': [ + (r"'''", String, '#pop'), + (r'#|\\.|\'|"', String), # no need to escape quotes in triple-strings + include('strings') + ], + } + + class DuelLexer(RegexLexer): """ Lexer for Duel Views Engine (formerly JBST) markup with JavaScript code blocks. @@ -2862,3 +2979,199 @@ class DartLexer(RegexLexer): (r'\$+', String.Single) ] } + + +class LassoLexer(RegexLexer): + """ + For `Lasso <http://www.lassosoft.com/>`_ source code, covering both + Lasso 9 syntax and LassoScript for Lasso 8.6 and earlier. For Lasso + embedded in HTML, use the `LassoHtmlLexer`. + + Additional options accepted: + + `builtinshighlighting` + If given and ``True``, highlight builtin tags, types, traits, and + methods (default: ``True``). + `requiredelimiters` + If given and ``True``, only highlight code between delimiters as Lasso + (default: ``False``). + + *New in Pygments 1.6.* + """ + + name = 'Lasso' + aliases = ['lasso', 'lassoscript'] + filenames = ['*.lasso', '*.lasso[89]'] + alias_filenames = ['*.incl', '*.inc', '*.las'] + mimetypes = ['text/x-lasso'] + flags = re.IGNORECASE | re.DOTALL | re.MULTILINE + + tokens = { + 'root': [ + (r'^#!.+lasso9\b', Comment.Preproc, 'lasso'), + (r'\s+', Other), + (r'\[noprocess\]', Comment.Preproc, ('delimiters', 'noprocess')), + (r'\[', Comment.Preproc, ('delimiters', 'squarebrackets')), + (r'<\?(LassoScript|lasso|=)', Comment.Preproc, + ('delimiters', 'anglebrackets')), + (r'<', Other, 'delimiters'), + include('lasso'), + ], + 'delimiters': [ + (r'\[noprocess\]', Comment.Preproc, 'noprocess'), + (r'\[', Comment.Preproc, 'squarebrackets'), + (r'<\?(LassoScript|lasso|=)', Comment.Preproc, 'anglebrackets'), + (r'<', Other), + (r'[^[<]+', Other), + ], + 'noprocess': [ + (r'\[/noprocess\]', Comment.Preproc, '#pop'), + (r'\[', Other), + (r'[^[]', Other), + ], + 'squarebrackets': [ + (r'\]', Comment.Preproc, '#pop'), + include('lasso'), + ], + 'anglebrackets': [ + (r'\?>', Comment.Preproc, '#pop'), + include('lasso'), + ], + 'lasso': [ + # whitespace/comments + (r'\s+', Text), + (r'//.*?\n', Comment.Single), + (r'/\*\*!.*?\*/', String.Doc), + (r'/\*.*?\*/', Comment.Multiline), + + # names + (r'\$[a-z_][\w\.]*', Name.Variable), + (r'(#[a-z_][\w\.]*|#\d+)', Name.Variable.Instance), + (r"\.'[a-z_][\w\.]*'", Name.Variable.Class), + (r"(self)(->)('[a-z_][\w\.]*')", + bygroups(Name.Builtin.Pseudo, Operator, Name.Variable.Class)), + (r'(self|void)\b', Name.Builtin.Pseudo), + (r'-[a-z_][\w\.]*', Name.Attribute), + (r'(::)([a-z_][\w\.]*)', bygroups(Punctuation, Name.Label)), + (r'(error_(code|msg)_\w+|Error_AddError|Error_ColumnRestriction|' + r'Error_DatabaseConnectionUnavailable|Error_DatabaseTimeout|' + r'Error_DeleteError|Error_FieldRestriction|Error_FileNotFound|' + r'Error_InvalidDatabase|Error_InvalidPassword|' + r'Error_InvalidUsername|Error_ModuleNotFound|' + r'Error_NoError|Error_NoPermission|Error_OutOfMemory|' + r'Error_ReqColumnMissing|Error_ReqFieldMissing|' + r'Error_RequiredColumnMissing|Error_RequiredFieldMissing|' + r'Error_UpdateError)\b', Name.Exception), + + # definitions + (r'(parent)(\s+)([a-z_][\w\.]*)', + bygroups(Keyword.Declaration, Text, Name.Class)), + (r'(define)(\s+)([a-z_][\w\.]*)(\s*)(=>)(\s*)(type|trait|thread)', + bygroups(Keyword.Declaration, Text, Name.Class, Text, Operator, + Text, Keyword)), + (r'(define)(\s+)([a-z_][\w\.]*)(->)([a-z_][\w\.]*=?)', + bygroups(Keyword.Declaration, Text, Name.Class, Operator, + Name.Function)), + (r'(define)(\s+)([a-z_][\w\.]*=?)', + bygroups(Keyword.Declaration, Text, Name.Function)), + (r'(public|protected|private)(\s+)([a-z_][\w\.]*)(\s*)(=>)', + bygroups(Keyword, Text, Name.Function, Text, Operator)), + (r'(public|protected|private|provide)(\s+)([a-z_][\w\.]*=?)(\s*)(\()', + bygroups(Keyword, Text, Name.Function, Text, Punctuation)), + + # keywords + (r'\.\.\.', Keyword.Pseudo), + (r'(true|false|null|[+\-]?infinity|\+?NaN)\b', Keyword.Constant), + (r'(local|var|variable|global|data)\b', Keyword.Declaration), + (r'(array|date|decimal|duration|integer|map|pair|string|tag|' + r'xml)\b', Keyword.Type), + (r'(/?)(Cache|Database_Names|Database_SchemaNames|' + r'Database_TableNames|Define_Tag|Define_Type|Email_Batch|' + r'Encode_Set|HTML_Comment|Handle|Handle_Error|Header|If|Inline|' + r'Iterate|LJAX_Target|Link|Link_CurrentAction|Link_CurrentGroup|' + r'Link_CurrentRecord|Link_Detail|Link_FirstGroup|' + r'Link_FirstRecord|Link_LastGroup|Link_LastRecord|Link_NextGroup|' + r'Link_NextRecord|Link_PrevGroup|Link_PrevRecord|Log|Loop|' + r'Namespace_Using|NoProcess|Output_None|Portal|Private|Protect|' + r'Records|Referer|Referrer|Repeating|ResultSet|Rows|Search_Args|' + r'Search_Arguments|Select|Sort_Args|Sort_Arguments|Thread_Atomic|' + r'Value_List|While|Abort|Case|Else|If_Empty|If_False|If_Null|' + r'If_True|Loop_Abort|Loop_Continue|Loop_Count|Params|Params_Up|' + r'Return|Return_Value|Run_Children|SOAP_DefineTag|' + r'SOAP_LastRequest|SOAP_LastResponse|Tag_Name)\b', + bygroups(Punctuation, Keyword)), + (r'(and|ascending|average|by|case|define|descending|do|else|' + r'equals|frozen|group|import|in|inherited|into|join|let|match|' + r'max|min|not|on|or|order|params|parent|private|protected|' + r'provide|public|require|return|select|skip|sum|take|thread|to|' + r'trait|type|where|with)\b', Keyword), + + # literals + (r'([+\-]?\d*\.\d+(e[+\-]?\d+)?)', Number.Float), + (r'0x[\da-f]+', Number.Hex), + (r'[+\-]?\d+', Number.Integer), + (r"'", String.Single, 'singlestring'), + (r'"', String.Double, 'doublestring'), + (r'`[^`]*`', String.Backtick), + + # other + (r'(=)(bw|ew|cn|lte?|gte?|n?eq|ft|n?rx)\b', + bygroups(Operator, Operator.Word)), + (r'([=\+\-\*/%<>&|!\?\.\\]+|:=)', Operator), + (r'[{}():;,@^]', Punctuation), + (r'(/?)([\w\.]+)', bygroups(Punctuation, Name.Other)), + ], + 'singlestring': [ + (r"'", String.Single, '#pop'), + (r"[^'\\]+", String.Single), + include('escape'), + (r"\\+", String.Single), + ], + 'doublestring': [ + (r'"', String.Double, '#pop'), + (r'[^"\\]+', String.Double), + include('escape'), + (r'\\+', String.Double), + ], + 'escape': [ + (r'\\(U[\da-f]{8}|u[\da-f]{4}|x[\da-f]{1,2}|[0-7]{1,3}|:[^:]+:|' + r'[abefnrtv\"\'\?\\]|$)', String.Escape), + ], + } + + def __init__(self, **options): + self.builtinshighlighting = get_bool_opt( + options, 'builtinshighlighting', True) + self.requiredelimiters = get_bool_opt( + options, 'requiredelimiters', False) + + self._builtins = set() + if self.builtinshighlighting: + from pygments.lexers._lassobuiltins import BUILTINS + for key, value in BUILTINS.iteritems(): + self._builtins.update(value) + RegexLexer.__init__(self, **options) + + def get_tokens_unprocessed(self, text): + stack = ['root'] + if self.requiredelimiters: + stack.append('delimiters') + for index, token, value in \ + RegexLexer.get_tokens_unprocessed(self, text, stack): + if token is Name.Other: + if value.lower() in self._builtins: + yield index, Name.Builtin, value + continue + yield index, token, value + + def analyse_text(text): + rv = 0.0 + if 'bin/lasso9' in text: + rv += 0.8 + if re.search(r'<\?(=|lasso)', text, re.I): + rv += 0.4 + if re.search(r'local\(', text, re.I): + rv += 0.4 + if re.search(r'(\[\n|\?>)', text): + rv += 0.4 + return rv diff --git a/tests/examplefiles/example.bugs b/tests/examplefiles/example.bugs new file mode 100644 index 00000000..b5b2fe7f --- /dev/null +++ b/tests/examplefiles/example.bugs @@ -0,0 +1,55 @@ +# Alligators: multinomial - logistic regression +# http://www.openbugs.info/Examples/Aligators.html +model { + + # PRIORS + alpha[1] <- 0; # zero contrast for baseline food + for (k in 2 : K) { + alpha[k] ~ dnorm(0, 0.00001) # vague priors + } + # Loop around lakes: + for (k in 1 : K){ + beta[1, k] <- 0 + } # corner-point contrast with first lake + for (i in 2 : I) { + beta[i, 1] <- 0 ; # zero contrast for baseline food + for (k in 2 : K){ + beta[i, k] ~ dnorm(0, 0.00001) # vague priors + } + } + # Loop around sizes: + for (k in 1 : K){ + gamma[1, k] <- 0 # corner-point contrast with first size + } + for (j in 2 : J) { + gamma[j, 1] <- 0 ; # zero contrast for baseline food + for ( k in 2 : K){ + gamma[j, k] ~ dnorm(0, 0.00001) # vague priors + } + } + + # LIKELIHOOD + for (i in 1 : I) { # loop around lakes + for (j in 1 : J) { # loop around sizes + + # Fit standard Poisson regressions relative to baseline + lambda[i, j] ~ dflat() # vague priors + for (k in 1 : K) { # loop around foods + X[i, j, k] ~ dpois(mu[i, j, k]) + log(mu[i, j, k]) <- lambda[i, j] + alpha[k] + beta[i, k] + gamma[j, k] + culmative.X[i, j, k] <- culmative(X[i, j, k], X[i, j, k]) + } + } + } + + # TRANSFORM OUTPUT TO ENABLE COMPARISON + # WITH AGRESTI'S RESULTS + for (k in 1 : K) { # loop around foods + for (i in 1 : I) { # loop around lakes + b[i, k] <- beta[i, k] - mean(beta[, k]); # sum to zero constraint + } + for (j in 1 : J) { # loop around sizes + g[j, k] <- gamma[j, k] - mean(gamma[, k]); # sum to zero constraint + } + } +} diff --git a/tests/examplefiles/example.jags b/tests/examplefiles/example.jags new file mode 100644 index 00000000..cae34beb --- /dev/null +++ b/tests/examplefiles/example.jags @@ -0,0 +1,48 @@ +# lsat.jags example from classic-bugs examples in JAGS +# See http://sourceforge.net/projects/mcmc-jags/files/Examples/2.x/ +var + response[R,T], m[R], culm[R], alpha[T], a[T], theta[N], r[N,T], + p[N,T], beta, theta.new, p.theta[T], p.item[R,T], P.theta[R]; +data { + for (j in 1:culm[1]) { + r[j, ] <- response[1, ]; + } + for (i in 2:R) { + for (j in (culm[i - 1] + 1):culm[i]) { + r[j, ] <- response[i, ]; + } + } +} +model { + # 2-parameter Rasch model + for (j in 1:N) { + for (k in 1:T) { + probit(p[j,k]) <- delta[k]*theta[j] - eta[k]; + r[j,k] ~ dbern(p[j,k]); + } + theta[j] ~ dnorm(0,1); + } + + # Priors + for (k in 1:T) { + eta[k] ~ dnorm(0,0.0001); + e[k] <- eta[k] - mean(eta[]); # sum-to-zero constraint + + delta[k] ~ dnorm(0,1) T(0,); # constrain variance to 1, slope +ve + d[k] <- delta[k]/pow(prod(delta), 1/T); # PRODUCT_k (d_k) = 1 + + g[k] <- e[k]/d[k]; # equivalent to B&A's threshold parameters + } + + # Compute probability of response pattern i, for later use in computing G^2 + theta.new ~ dnorm(0,1); # ability parameter for random student + for(k in 1:T) { + probit(p.theta[k]) <- delta[k]*theta.new - eta[k]; + for(i in 1:R) { + p.item[i,k] <- p.theta[k]^response[i,k] * (1-p.theta[k])^(1-response[i,k]); + } + } + for(i in 1:R) { + P.theta[i] <- prod(p.item[i,]) + } +} diff --git a/tests/examplefiles/example.stan b/tests/examplefiles/example.stan new file mode 100644 index 00000000..3d88bb5e --- /dev/null +++ b/tests/examplefiles/example.stan @@ -0,0 +1,87 @@ +/* +A file for testing Stan syntax highlighting. + +It is not a real model and will not compile +*/ +# also a comment +// also a comment +data { + // valid name + int abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_abc; + // all types should be highlighed + int a3; + real foo[2]; + vector[3] bar; + row_vector[3] baz; + matrix[3,3] qux; + simplex[3] quux; + ordered[3] corge; + corr_matrix[3] grault; + cov_matrix[3] garply; + + // bad names + // includes . + real foo.; + // beings with number + //real 0foo; + // begins with _ + //real _foo; +} +transformed data { + real xyzzy; + int thud; + row_vector grault2; + matrix qux2; + + // all floating point literals should be recognized + // all operators should be recognized + // paren should be recognized; + xyzzy <- 1234.5687 + .123 - (2.7e3 / 2E-5 * 135e-5); + // integer literal + thud <- -12309865; + // ./ and .* should be recognized as operators + grault2 <- grault .* garply ./ garply; + // ' and \ should be regognized as operators + qux2 <- qux' \ bar; + +} +parameters { + real fred; + real plugh; + +} +transformed parameters { +} +model { + // ~, <- are operators, + // T may be be recognized + // normal is a function + fred ~ normal(0, 1) T(-0.5, 0.5); + // interior block + { + real tmp; + // for, in should be highlighted + for (i in 1:10) { + tmp <- tmp + 0.1; + } + } + // lp__ should be highlighted + // normal_log as a function + lp__ <- lp__ + normal_log(plugh, 0, 1); + +} +generated quantities { + real foo1; + foo1 <- foo + 1; +} + +## Baddness +//foo <- 2.0; +//foo ~ normal(0, 1); +//not_a_block { +//} + +/* +what happens with this? +*/ +// */ diff --git a/tests/examplefiles/example.xtend b/tests/examplefiles/example.xtend new file mode 100644 index 00000000..f6a51f7a --- /dev/null +++ b/tests/examplefiles/example.xtend @@ -0,0 +1,34 @@ +package beer + +import static extension beer.BottleSupport.* +import org.junit.Test + +class BottleSong { + + @Test + def void singIt() { + println(singTheSong(99)) + } + + def singTheSong(int all) ''' + «FOR i : all .. 1» + «i.Bottles» of beer on the wall, «i.bottles» of beer. + Take one down and pass it around, «(i - 1).bottles» of beer on the wall. + + «ENDFOR» + No more bottles of beer on the wall, no more bottles of beer. + Go to the store and buy some more, «all.bottles» of beer on the wall. + ''' + + def private java.lang.String bottles(int i) { + switch i { + case 0 : 'no more bottles' + case 1 : 'one bottle' + default : '''«i» bottles''' + }.toString + } + + def String Bottles(int i) { + bottles(i).toFirstUpper + } +}
\ No newline at end of file diff --git a/tests/examplefiles/http_request_example b/tests/examplefiles/http_request_example index 5d2a1d52..675d1691 100644 --- a/tests/examplefiles/http_request_example +++ b/tests/examplefiles/http_request_example @@ -3,7 +3,8 @@ Host: pygments.org Connection: keep-alivk
Cache-Control: max-age=0
Origin: http://pygments.org
-User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2)
+ AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://pygments.org/
diff --git a/tests/examplefiles/http_response_example b/tests/examplefiles/http_response_example index bf53d61d..51340ca4 100644 --- a/tests/examplefiles/http_response_example +++ b/tests/examplefiles/http_response_example @@ -18,8 +18,10 @@ Expires: Tue, 31 Mar 1981 05:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
X-MID: a55f21733bc52bb11d1fc58f9b51b4974fbb8f83
X-RateLimit-Reset: 1323738416
-Set-Cookie: k=10.34.234.116.1323735104238974; path=/; expires=Tue, 20-Dec-11 00:11:44 GMT; domain=.twitter.com
-Set-Cookie: guest_id=v1%3A13237351042425496; domain=.twitter.com; path=/; expires=Thu, 12-Dec-2013 12:11:44 GMT
+Set-Cookie: k=10.34.234.116.1323735104238974; path=/;
+ expires=Tue, 20-Dec-11 00:11:44 GMT; domain=.twitter.com
+Set-Cookie: guest_id=v1%3A13237351042425496; domain=.twitter.com; path=/;
+ expires=Thu, 12-Dec-2013 12:11:44 GMT
Set-Cookie: _twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCPS6wjQ0AToHaWQiJTFiMTlhY2E1ZjczYThk%250ANDUwMWQxNjMwZGU2YTQ1ODBhIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVy%250AOjpGbGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--6b502f30a083e8a41a64f10930e142ea362b1561; domain=.twitter.com; path=/; HttpOnly
Vary: Accept-Encoding
Server: tfe
diff --git a/tests/examplefiles/json.lasso b/tests/examplefiles/json.lasso new file mode 100644 index 00000000..72926112 --- /dev/null +++ b/tests/examplefiles/json.lasso @@ -0,0 +1,301 @@ +<?LassoScript + + // + // JSON Encoding and Decoding + // + // Copyright 2007-2012 LassoSoft Inc. + // + // <http://json.org/> + // <http://json-rpc.org/> + // <http://www.ietf.org/rfc/rfc4627.txt?number=4627> + // + +If: (Lasso_TagExists: 'Encode_JSON') == False; + + Define_Tag: 'JSON', -Namespace='Encode_', -Required='value', -Optional='options'; + + Local: 'escapes' = Map('\\' = '\\', '"' = '"', '\r' = 'r', '\n' = 'n', '\t' = 't', '\f' = 'f', '\b' = 'b'); + Local: 'output' = ''; + Local: 'newoptions' = (Array: -Internal); + If: !(Local_Defined: 'options') || (#options->(IsA: 'array') == False); + Local: 'options' = (Array); + /If; + If: (#options >> -UseNative) || (Params >> -UseNative); + #newoptions->(Insert: -UseNative); + /If; + If: (#options >> -NoNative) || (Params >> -NoNative); + #newoptions->(Insert: -NoNative); + /If; + If: (#options !>> -UseNative) && ((#value->(IsA: 'set')) || (#value->(IsA: 'list')) || (#value->(IsA: 'queue')) || (#value->(IsA: 'priorityqueue')) || (#value->(IsA: 'stack'))); + #output += (Encode_JSON: Array->(insertfrom: #value->iterator) &, -Options=#newoptions); + Else: (#options !>> -UseNative) && (#value->(IsA: 'pair')); + #output += (Encode_JSON: (Array: #value->First, #value->Second)); + Else: (#options !>> -Internal) && (#value->(Isa: 'array') == False) && (#value->(IsA: 'map') == False); + #output += '[' + (Encode_JSON: #value, -Options=#newoptions) + ']'; + Else: (#value->(IsA: 'literal')); + #output += #value; + Else: (#value->(IsA: 'string')); + #output += '"'; + Loop: (#value->Length); + Local('character' = #value->(Get: Loop_Count)); + #output->(Append: + (Match_RegExp('[\\x{0020}-\\x{21}\\x{23}-\\x{5b}\\x{5d}-\\x{10fff}]') == #character) ? #character | + '\\' + (#escapes->(Contains: #character) ? #escapes->(Find: #character) | 'u' + String(Encode_Hex(#character))->PadLeading(4, '0')&) + ); + /Loop; + #output += '"'; + Else: (#value->(IsA: 'integer')) || (#value->(IsA: 'decimal')) || (#value->(IsA: 'boolean')); + #output += (String: #value); + Else: (#value->(IsA: 'null')); + #output += 'null'; + Else: (#value->(IsA: 'date')); + If: #value->gmt; + #output += '"' + #value->(format: '%QT%TZ') + '"'; + Else; + #output += '"' + #value->(format: '%QT%T') + '"'; + /If; + Else: (#value->(IsA: 'array')); + #output += '['; + Iterate: #value, (Local: 'temp'); + #output += (Encode_JSON: #temp, -Options=#newoptions); + If: #value->Size != Loop_Count; + #output += ', '; + /If; + /Iterate; + #output += ']'; + Else: (#value->(IsA: 'object')); + #output += '{'; + Iterate: #value, (Local: 'temp'); + #output += #temp->First + ': ' + (Encode_JSON: #temp->Second, -Options=#newoptions); + If: (#value->Size != Loop_Count); + #output += ', '; + /If; + /Iterate; + #output += '}'; + Else: (#value->(IsA: 'map')); + #output += '{'; + Iterate: #value, (Local: 'temp'); + #output += (Encode_JSON: #temp->First, -Options=#newoptions) + ': ' + (Encode_JSON: #temp->Second, -Options=#newoptions); + If: (#value->Size != Loop_Count); + #output += ', '; + /If; + /Iterate; + #output += '}'; + Else: (#value->(IsA: 'client_ip')) || (#value->(IsA: 'client_address')); + #output += (Encode_JSON: (String: #value), -Options=#newoptions); + Else: (#options !>> -UseNative) && (#value->(IsA: 'set')) || (#value->(IsA: 'list')) || (#value->(IsA: 'queue')) || (#value->(IsA: 'priorityqueue')) || (#value->(IsA: 'stack')); + #output += (Encode_JSON: Array->(insertfrom: #value->iterator) &, -Options=#newoptions); + Else: (#options !>> -NoNative); + #output += (Encode_JSON: (Map: '__jsonclass__'=(Array:'deserialize',(Array:'<LassoNativeType>' + #value->Serialize + '</LassoNativeType>')))); + /If; + Return: @#output; + + /Define_Tag; + +/If; + +If: (Lasso_TagExists: 'Decode_JSON') == False; + + Define_Tag: 'JSON', -Namespace='Decode_', -Required='value'; + + (#value == '') ? Return: Null; + + Define_Tag: 'consume_string', -Required='ibytes'; + Local: 'unescapes' = (map: 34 = '"', 92 = '\\', 98 = '\b', 102 = '\f', 110 = '\n', 114 = '\r', 116 = '\t'); + Local: 'temp' = 0, 'obytes' = Bytes; + While: ((#temp := #ibytes->export8bits) != 34); // '"' + If: (#temp === 92); // '\' + #temp = #ibytes->export8bits; + If: (#temp === 117); // 'u' + #obytes->(ImportString: (Decode_Hex: (String: #ibytes->(GetRange: #ibytes->Position + 1, 4)))->(ExportString: 'UTF-16'), 'UTF-8'); + #ibytes->(SetPosition: #ibytes->Position + 4); + Else; + If: (#unescapes->(Contains: #temp)); + #obytes->(ImportString: #unescapes->(Find: #temp), 'UTF-8'); + Else; + #obytes->(Import8Bits: #temp); + /If; + /If; + Else; + #obytes->(Import8Bits: #temp); + /If; + /While; + Local('output' = #obytes->(ExportString: 'UTF-8')); + If: #output->(BeginsWith: '<LassoNativeType>') && #output->(EndsWith: '</LassoNativeType>'); + Local: 'temp' = #output - '<LassoNativeType>' - '</LassoNativeType>'; + Local: 'output' = null; + Protect; + #output->(Deserialize: #temp); + /Protect; + Else: (Valid_Date: #output, -Format='%QT%TZ'); + Local: 'output' = (Date: #output, -Format='%QT%TZ'); + Else: (Valid_Date: #output, -Format='%QT%T'); + Local: 'output' = (Date: #output, -Format='%QT%T'); + /If; + Return: @#output; + /Define_Tag; + + Define_Tag: 'consume_token', -Required='ibytes', -required='temp'; + Local: 'obytes' = bytes->(import8bits: #temp) &; + local: 'delimit' = (array: 9, 10, 13, 32, 44, 58, 93, 125); // \t\r\n ,:]} + While: (#delimit !>> (#temp := #ibytes->export8bits)); + #obytes->(import8bits: #temp); + /While; + Local: 'output' = (String: #obytes); + If: (#output == 'true') || (#output == 'false'); + Return: (Boolean: #output); + Else: (#output == 'null'); + Return: Null; + Else: (String_IsNumeric: #output); + Return: (#output >> '.') ? (Decimal: #output) | (Integer: #output); + /If; + Return: @#output; + /Define_Tag; + + Define_Tag: 'consume_array', -Required='ibytes'; + Local: 'output' = array; + local: 'delimit' = (array: 9, 10, 13, 32, 44); // \t\r\n , + local: 'temp' = 0; + While: ((#temp := #ibytes->export8bits) != 93); // ] + If: (#delimit >> #temp); + // Discard whitespace + Else: (#temp == 34); // " + #output->(insert: (consume_string: @#ibytes)); + Else: (#temp == 91); // [ + #output->(insert: (consume_array: @#ibytes)); + Else: (#temp == 123); // { + #output->(insert: (consume_object: @#ibytes)); + Else; + #output->(insert: (consume_token: @#ibytes, @#temp)); + (#temp == 93) ? Loop_Abort; + /If; + /While; + Return: @#output; + /Define_Tag; + + Define_Tag: 'consume_object', -Required='ibytes'; + Local: 'output' = map; + local: 'delimit' = (array: 9, 10, 13, 32, 44); // \t\r\n , + local: 'temp' = 0; + local: 'key' = null; + local: 'val' = null; + While: ((#temp := #ibytes->export8bits) != 125); // } + If: (#delimit >> #temp); + // Discard whitespace + Else: (#key !== null) && (#temp == 34); // " + #output->(insert: #key = (consume_string: @#ibytes)); + #key = null; + Else: (#key !== null) && (#temp == 91); // [ + #output->(insert: #key = (consume_array: @#ibytes)); + #key = null; + Else: (#key !== null) && (#temp == 123); // { + #output->(insert: #key = (consume_object: @#ibytes)); + #key = null; + Else: (#key !== null); + #output->(insert: #key = (consume_token: @#ibytes, @#temp)); + (#temp == 125) ? Loop_abort; + #key = null; + Else; + #key = (consume_string: @#ibytes); + while(#delimit >> (#temp := #ibytes->export8bits)); + /while; + #temp != 58 ? Loop_Abort; + /If; + /While; + If: (#output >> '__jsonclass__') && (#output->(Find: '__jsonclass__')->(isa: 'array')) && (#output->(Find: '__jsonclass__')->size >= 2) && (#output->(Find: '__jsonclass__')->First == 'deserialize'); + Return: #output->(find: '__jsonclass__')->Second->First; + Else: (#output >> 'native') && (#output >> 'comment') && (#output->(find: 'comment') == 'http://www.lassosoft.com/json'); + Return: #output->(find: 'native'); + /If; + Return: @#output; + /Define_Tag; + + Local: 'ibytes' = (bytes: #value); + Local: 'start' = 1; + #ibytes->removeLeading(BOM_UTF8); + Local: 'temp' = #ibytes->export8bits; + If: (#temp == 91); // [ + Local: 'output' = (consume_array: @#ibytes); + Return: @#output; + Else: (#temp == 123); // { + Local: 'output' = (consume_object: @#ibytes); + Return: @#output; + /If; + + /Define_Tag; + +/If; + +If: (Lasso_TagExists: 'Literal') == False; + + Define_Type: 'Literal', 'String'; + /Define_Type; + +/If; + +If: (Lasso_TagExists: 'Object') == False; + + Define_Type: 'Object', 'Map'; + /Define_Type; + +/If; + +If: (Lasso_TagExists: 'JSON_RPCCall') == False; + + Define_Tag: 'RPCCall', -Namespace='JSON_', + -Required='method', + -Optional='params', + -Optional='id', + -Optional='host'; + + !(Local_Defined: 'host') ? Local: 'host' = 'http://localhost/lassoapps.8/rpc/rpc.lasso'; + !(Local_Defined: 'id') ? Local: 'id' = Lasso_UniqueID; + Local: 'request' = (Map: 'method' = #method, 'params' = #params, 'id' = #id); + Local: 'request' = (Encode_JSON: #request); + Local: 'result' = (Include_URL: #host, -PostParams=#request); + Local: 'result' = (Decode_JSON: #result); + Return: @#result; + + /Define_Tag; + +/If; + +If: (Lasso_TagExists: 'JSON_Records') == False; + + Define_Tag: 'JSON_Records', + -Optional='KeyField', + -Optional='ReturnField', + -Optional='ExcludeField', + -Optional='Fields'; + + Local: '_fields' = (Local_Defined: 'fields') && #fields->(IsA: 'array') ? #fields | Field_Names; + Fail_If: #_fields->size == 0, -1, 'No fields found for [JSON_Records]'; + Local: '_keyfield' = (Local: 'keyfield'); + If: #_fields !>> #_keyfield; + Local: '_keyfield' = (KeyField_Name); + If: #_fields !>> #_keyfield; + Local: '_keyfield' = 'ID'; + If: #_fields !>> #_keyfield; + Local: '_keyfield' = #_fields->First; + /If; + /If; + /If; + Local: '_index' = #_fields->(FindPosition: #_keyfield)->First; + Local: '_return' = (Local_Defined: 'returnfield') ? (Params->(Find: -ReturnField)->(ForEach: {Params->First = Params->First->Second; Return: True}) &) | @#_fields; + Local: '_exclude' = (Local_Defined: 'excludefield') ? (Params->(Find: -ExcludeField)->(ForEach: {Params->First = Params->First->Second; Return: True}) &) | Array; + Local: '_records' = Array; + Iterate: Records_Array, (Local: '_record'); + Local: '_temp' = Map; + Iterate: #_fields, (Local: '_field'); + ((#_return >> #_field) && (#_exclude !>> #_field)) ? #_temp->Insert(#_field = #_record->(Get: Loop_Count)); + /Iterate; + #_records->Insert(#_temp); + /Iterate; + Local: '_output' = (Encode_JSON: (Object: 'error_msg'=Error_Msg, 'error_code'=Error_Code, 'found_count'=Found_Count, 'keyfield'=#_keyfield, 'rows'=#_records)); + Return: @#_output; + + /Define_Tag; + +/If; + +?> diff --git a/tests/examplefiles/json.lasso9 b/tests/examplefiles/json.lasso9 new file mode 100644 index 00000000..732ab2af --- /dev/null +++ b/tests/examplefiles/json.lasso9 @@ -0,0 +1,213 @@ + +/** + trait_json_serialize + Objects with this trait will be assumed to convert to json data + when its ->asString method is called +*/ +define trait_json_serialize => trait { + require asString() +} + +define json_serialize(e::bytes)::string => ('"' + (string(#e)->Replace(`\`, `\\`) & Replace('\"', '\\"') & Replace('\r', '\\r') & Replace('\n', '\\n') & Replace('\t', '\\t') & Replace('\f', '\\f') & Replace('\b', '\\b') &) + '"') +define json_serialize(e::string)::string => ('"' + (string(#e)->Replace(`\`, `\\`) & Replace('\"', '\\"') & Replace('\r', '\\r') & Replace('\n', '\\n') & Replace('\t', '\\t') & Replace('\f', '\\f') & Replace('\b', '\\b') &) + '"') +define json_serialize(e::json_literal)::string => (#e->asstring) +define json_serialize(e::integer)::string => (#e->asstring) +define json_serialize(e::decimal)::string => (#e->asstring) +define json_serialize(e::boolean)::string => (#e->asstring) +define json_serialize(e::null)::string => ('null') +define json_serialize(e::date)::string => ('"' + #e->format(#e->gmt ? '%QT%TZ' | '%Q%T') + '"') +/* +define json_serialize(e::array)::string => { + local(output) = ''; + local(delimit) = ''; + #e->foreach => { #output += #delimit + json_serialize(#1); #delimit = ', '; } + return('[' + #output + ']'); +} +define json_serialize(e::staticarray)::string => { + local(output) = ''; + local(delimit) = ''; + #e->foreach => { #output += #delimit + json_serialize(#1); #delimit = ', '; } + return('[' + #output + ']'); +} +*/ +define json_serialize(e::trait_forEach)::string => { + local(output) = ''; + local(delimit) = ''; + #e->foreach => { #output += #delimit + json_serialize(#1); #delimit = ', '; } + return('[' + #output + ']'); +} +define json_serialize(e::map)::string => { + local(output = with pr in #e->eachPair + select json_serialize(#pr->first->asString) + ': ' + json_serialize(#pr->second)) + return '{' + #output->join(',') + '}' +} +define json_serialize(e::json_object)::string => { + local(output) = ''; + local(delimit) = ''; + #e->foreachpair => { #output += #delimit + #1->first + ': ' + json_serialize(#1->second); #delimit = ', '; } + return('{' + #output + '}'); +} +define json_serialize(e::trait_json_serialize) => #e->asString +define json_serialize(e::any)::string => json_serialize('<LassoNativeType>' + #e->serialize + '</LassoNativeType>') + +// Bil Corry fixes for decoding json +define json_consume_string(ibytes::bytes) => { + local(obytes) = bytes; + local(temp) = 0; + while((#temp := #ibytes->export8bits) != 34); + #obytes->import8bits(#temp); + (#temp == 92) ? #obytes->import8bits(#ibytes->export8bits); // Escape \ + /while; + local(output = string(#obytes)->unescape) + //Replace('\\"', '\"') & Replace('\\r', '\r') & Replace('\\n', '\n') & Replace('\\t', '\t') & Replace('\\f', '\f') & Replace('\\b', '\b') &; + if(#output->BeginsWith('<LassoNativeType>') && #output->EndsWith('</LassoNativeType>')); + Protect; + return serialization_reader(xml(#output - '<LassoNativeType>' - '</LassoNativeType>'))->read + /Protect; + else( (#output->size == 16 or #output->size == 15) and regexp(`\d{8}T\d{6}Z?`, '', #output)->matches) + return date(#output, -Format=#output->size == 16?`yyyyMMdd'T'HHmmssZ`|`yyyyMMdd'T'HHmmss`) + /if + return #output +} + +// Bil Corry fix + Ke fix +define json_consume_token(ibytes::bytes, temp::integer) => { + + local(obytes = bytes->import8bits(#temp) &, + delimit = array(9, 10, 13, 32, 44, 58, 93, 125)) // \t\r\n ,:]} + + while(#delimit !>> (#temp := #ibytes->export8bits)) + #obytes->import8bits(#temp) + /while + + #temp == 125? // } + #ibytes->marker -= 1 +//============================================================================ +// Is also end of token if end of array[] + #temp == 93? // ] + #ibytes->marker -= 1 +//............................................................................ + + local(output = string(#obytes)) + #output == 'true'? + return true + #output == 'false'? + return false + #output == 'null'? + return null + string_IsNumeric(#output)? + return (#output >> '.')? decimal(#output) | integer(#output) + + return #output +} + +// Bil Corry fix +define json_consume_array(ibytes::bytes)::array => { + Local(output) = array; + local(delimit) = array( 9, 10, 13, 32, 44); // \t\r\n , + local(temp) = 0; + While((#temp := #ibytes->export8bits) != 93); // ] + If(#delimit >> #temp); + // Discard whitespace + Else(#temp == 34); // " + #output->insert(json_consume_string(#ibytes)); + Else(#temp == 91); // [ + #output->insert(json_consume_array(#ibytes)); + Else(#temp == 123); // { + #output->insert(json_consume_object(#ibytes)); + Else; + #output->insert(json_consume_token(#ibytes, #temp)); + (#temp == 93) ? Loop_Abort; + /If; + /While; + Return(#output); +} + +// Bil Corry fix +define json_consume_object(ibytes::bytes)::map => { + Local('output' = map, + 'delimit' = array( 9, 10, 13, 32, 44), // \t\r\n , + 'temp' = 0, + 'key' = null, + 'val' = null); + While((#temp := #ibytes->export8bits) != 125); // } + If(#delimit >> #temp); + // Discard whitespace + Else((#key !== null) && (#temp == 34)); // " + #output->insert(#key = json_consume_string(#ibytes)); + #key = null; + Else((#key !== null) && (#temp == 91)); // [ + #output->insert(#key = json_consume_array(#ibytes)); + #key = null; + Else((#key !== null) && (#temp == 123)); // { + #output->insert(#key = json_consume_object(#ibytes)); + #key = null; + Else((#key !== null)); + #output->insert(#key = json_consume_token(#ibytes, #temp)); + #key = null; + Else; + #key = json_consume_string(#ibytes); + while(#delimit >> (#temp := #ibytes->export8bits)); + /while; + #temp != 58 ? Loop_Abort; + /If; + /While; + + If((#output >> '__jsonclass__') && (#output->Find('__jsonclass__')->isa('array')) && (#output->Find('__jsonclass__')->size >= 2) && (#output->Find('__jsonclass__')->First == 'deserialize')); + Return(#output->find('__jsonclass__')->Second->First); + Else((#output >> 'native') && (#output >> 'comment') && (#output->find('comment') == 'http://www.lassosoft.com/json')); + Return(#output->find('native')); + /If; + Return(#output); +} + +// Bil Corry fix + Ke fix +define json_deserialize(ibytes::bytes)::any => { + #ibytes->removeLeading(bom_utf8); + +//============================================================================ +// Reset marker on provided bytes + #ibytes->marker = 0 +//............................................................................ + + Local(temp) = #ibytes->export8bits; + If(#temp == 91); // [ + Return(json_consume_array(#ibytes)); + Else(#temp == 123); // { + Return(json_consume_object(#ibytes)); + else(#temp == 34) // " + return json_consume_string(#ibytes) + /If; +} + +define json_deserialize(s::string) => json_deserialize(bytes(#s)) + +/**! json_literal - This is a subclass of String used for JSON encoding. + + A json_literal works exactly like a string, but will be inserted directly + rather than being encoded into JSON. This allows JavaScript elements + like functions to be inserted into JSON objects. This is most useful + when the JSON object will be used within a JavaScript on the local page. + [Map: 'fn'=Literal('function(){ ...})] => {'fn': function(){ ...}} +**/ +define json_literal => type { + parent string +} + +/**! json_object - This is a subclass of Map used for JSON encoding. + + An object works exactly like a map, but when it is encoded into JSON all + of the keys will be inserted literally. This makes it easy to create a + JavaScript object without extraneous quote marks. + Object('name'='value') => {name: "value"} +**/ +define json_object => type { + parent map + public onCreate(...) => ..onCreate(:#rest or (:)) +} + +define json_rpccall(method::string, params=map, id='', host='') => { + #id == '' ? #host = Lasso_UniqueID; + #host == '' ? #host = 'http://localhost/lassoapps.8/rpc/rpc.lasso'; + Return(Decode_JSON(Include_URL(#host, -PostParams=Encode_JSON(Map('method' = #method, 'params' = #params, 'id' = #id))))); +} diff --git a/tests/examplefiles/livescript-demo.ls b/tests/examplefiles/livescript-demo.ls new file mode 100644 index 00000000..2ff68c63 --- /dev/null +++ b/tests/examplefiles/livescript-demo.ls @@ -0,0 +1,41 @@ +a = -> [1 to 50] +const b = --> [2 til 5] +var c = ~~> 10_000_000km * 500ms - 16~ff / 32~lol +e = (a) -> (b) ~> (c) --> (d, e) ~~> <[list of words]> +dashes-identifiers = -> + a - a b -- c 1-1 1- -1 a- a a -a +underscores_i$d = -> + /regexp1/ + //regexp2//g + 'strings' and "strings" and \strings + +[2 til 10] + |> map (* 2) + |> filter (> 5) + |> fold (+) + +obj = + prop1: 1 + prop2: 2 + +class Class extends Anc-est-or + (args) -> + <- # Comment + <~ /* Comment */ + void undefined yes no on off + a.void b.undefined c.off d.if f.no g.not + avoid bundefined coff dif fno gnot + "inter #{2 + 2} #variable" + '''HELLO 'world' ''' + +copy = (from, to, callback) --> + error, data <- read file + return callback error if error? + error <~ write file, data + return callback error if error? + callback() + +take(n, [x, ...xs]:list) = + | n <= 0 => [] + | empty list => [] + | otherwise => [x] +++ take n - 1, xs diff --git a/tests/examplefiles/rust_example.rs b/tests/examplefiles/rust_example.rs new file mode 100644 index 00000000..af791fbc --- /dev/null +++ b/tests/examplefiles/rust_example.rs @@ -0,0 +1,743 @@ + +#[doc = "json serialization"]; + +import result::{result, ok, err}; +import io; +import io::{reader_util, writer_util}; +import map; +import map::hashmap; + +export json; +export error; +export to_writer; +export to_str; +export from_reader; +export from_str; +export eq; + +export num; +export string; +export boolean; +export list; +export dict; +export null; + +#[doc = "Represents a json value"] +enum json { + num(float), + string(str), + boolean(bool), + list([json]), + dict(map::hashmap<str,json>), + null, +} + +type error = { + line: uint, + col: uint, + msg: str, +}; + +#[doc = "Serializes a json value into a io::writer"] +fn to_writer(wr: io::writer, j: json) { + alt j { + num(n) { wr.write_str(float::to_str(n, 6u)); } + string(s) { + wr.write_char('"'); + let mut escaped = ""; + str::chars_iter(s) { |c| + alt c { + '"' { escaped += "\\\""; } + '\\' { escaped += "\\\\"; } + '\x08' { escaped += "\\b"; } + '\x0c' { escaped += "\\f"; } + '\n' { escaped += "\\n"; } + '\r' { escaped += "\\r"; } + '\t' { escaped += "\\t"; } + _ { escaped += str::from_char(c); } + } + }; + wr.write_str(escaped); + wr.write_char('"'); + } + boolean(b) { + wr.write_str(if b { "true" } else { "false" }); + } + list(v) { + wr.write_char('['); + let mut first = true; + vec::iter(v) { |item| + if !first { + wr.write_str(", "); + } + first = false; + to_writer(wr, item); + }; + wr.write_char(']'); + } + dict(d) { + if d.size() == 0u { + wr.write_str("{}"); + ret; + } + + wr.write_str("{ "); + let mut first = true; + d.items { |key, value| + if !first { + wr.write_str(", "); + } + first = false; + to_writer(wr, string(key)); + wr.write_str(": "); + to_writer(wr, value); + }; + wr.write_str(" }"); + } + null { + wr.write_str("null"); + } + } +} + +#[doc = "Serializes a json value into a string"] +fn to_str(j: json) -> str { + io::with_str_writer { |wr| to_writer(wr, j) } +} + +type parser = { + rdr: io::reader, + mut ch: char, + mut line: uint, + mut col: uint, +}; + +impl parser for parser { + fn eof() -> bool { self.ch == -1 as char } + + fn bump() { + self.ch = self.rdr.read_char(); + + if self.ch == '\n' { + self.line += 1u; + self.col = 1u; + } else { + self.col += 1u; + } + } + + fn next_char() -> char { + self.bump(); + self.ch + } + + fn error<T>(msg: str) -> result<T, error> { + err({ line: self.line, col: self.col, msg: msg }) + } + + fn parse() -> result<json, error> { + alt self.parse_value() { + ok(value) { + // Skip trailing whitespaces. + self.parse_whitespace(); + // Make sure there is no trailing characters. + if self.eof() { + ok(value) + } else { + self.error("trailing characters") + } + } + e { e } + } + } + + fn parse_value() -> result<json, error> { + self.parse_whitespace(); + + if self.eof() { ret self.error("EOF while parsing value"); } + + alt self.ch { + 'n' { self.parse_ident("ull", null) } + 't' { self.parse_ident("rue", boolean(true)) } + 'f' { self.parse_ident("alse", boolean(false)) } + '0' to '9' | '-' { self.parse_number() } + '"' { + alt self.parse_str() { + ok(s) { ok(string(s)) } + err(e) { err(e) } + } + } + '[' { self.parse_list() } + '{' { self.parse_object() } + _ { self.error("invalid syntax") } + } + } + + fn parse_whitespace() { + while char::is_whitespace(self.ch) { self.bump(); } + } + + fn parse_ident(ident: str, value: json) -> result<json, error> { + if str::all(ident, { |c| c == self.next_char() }) { + self.bump(); + ok(value) + } else { + self.error("invalid syntax") + } + } + + fn parse_number() -> result<json, error> { + let mut neg = 1f; + + if self.ch == '-' { + self.bump(); + neg = -1f; + } + + let mut res = alt self.parse_integer() { + ok(res) { res } + err(e) { ret err(e); } + }; + + if self.ch == '.' { + alt self.parse_decimal(res) { + ok(r) { res = r; } + err(e) { ret err(e); } + } + } + + if self.ch == 'e' || self.ch == 'E' { + alt self.parse_exponent(res) { + ok(r) { res = r; } + err(e) { ret err(e); } + } + } + + ok(num(neg * res)) + } + + fn parse_integer() -> result<float, error> { + let mut res = 0f; + + alt self.ch { + '0' { + self.bump(); + + // There can be only one leading '0'. + alt self.ch { + '0' to '9' { ret self.error("invalid number"); } + _ {} + } + } + '1' to '9' { + while !self.eof() { + alt self.ch { + '0' to '9' { + res *= 10f; + res += ((self.ch as int) - ('0' as int)) as float; + + self.bump(); + } + _ { break; } + } + } + } + _ { ret self.error("invalid number"); } + } + + ok(res) + } + + fn parse_decimal(res: float) -> result<float, error> { + self.bump(); + + // Make sure a digit follows the decimal place. + alt self.ch { + '0' to '9' {} + _ { ret self.error("invalid number"); } + } + + let mut res = res; + let mut dec = 1f; + while !self.eof() { + alt self.ch { + '0' to '9' { + dec /= 10f; + res += (((self.ch as int) - ('0' as int)) as float) * dec; + + self.bump(); + } + _ { break; } + } + } + + ok(res) + } + + fn parse_exponent(res: float) -> result<float, error> { + self.bump(); + + let mut res = res; + let mut exp = 0u; + let mut neg_exp = false; + + alt self.ch { + '+' { self.bump(); } + '-' { self.bump(); neg_exp = true; } + _ {} + } + + // Make sure a digit follows the exponent place. + alt self.ch { + '0' to '9' {} + _ { ret self.error("invalid number"); } + } + + while !self.eof() { + alt self.ch { + '0' to '9' { + exp *= 10u; + exp += (self.ch as uint) - ('0' as uint); + + self.bump(); + } + _ { break; } + } + } + + let exp = float::pow_with_uint(10u, exp); + if neg_exp { + res /= exp; + } else { + res *= exp; + } + + ok(res) + } + + fn parse_str() -> result<str, error> { + let mut escape = false; + let mut res = ""; + + while !self.eof() { + self.bump(); + + if (escape) { + alt self.ch { + '"' { str::push_char(res, '"'); } + '\\' { str::push_char(res, '\\'); } + '/' { str::push_char(res, '/'); } + 'b' { str::push_char(res, '\x08'); } + 'f' { str::push_char(res, '\x0c'); } + 'n' { str::push_char(res, '\n'); } + 'r' { str::push_char(res, '\r'); } + 't' { str::push_char(res, '\t'); } + 'u' { + // Parse \u1234. + let mut i = 0u; + let mut n = 0u; + while i < 4u { + alt self.next_char() { + '0' to '9' { + n = n * 10u + + (self.ch as uint) - ('0' as uint); + } + _ { ret self.error("invalid \\u escape"); } + } + i += 1u; + } + + // Error out if we didn't parse 4 digits. + if i != 4u { + ret self.error("invalid \\u escape"); + } + + str::push_char(res, n as char); + } + _ { ret self.error("invalid escape"); } + } + escape = false; + } else if self.ch == '\\' { + escape = true; + } else { + if self.ch == '"' { + self.bump(); + ret ok(res); + } + str::push_char(res, self.ch); + } + } + + self.error("EOF while parsing string") + } + + fn parse_list() -> result<json, error> { + self.bump(); + self.parse_whitespace(); + + let mut values = []; + + if self.ch == ']' { + self.bump(); + ret ok(list(values)); + } + + loop { + alt self.parse_value() { + ok(v) { vec::push(values, v); } + e { ret e; } + } + + self.parse_whitespace(); + if self.eof() { + ret self.error("EOF while parsing list"); + } + + alt self.ch { + ',' { self.bump(); } + ']' { self.bump(); ret ok(list(values)); } + _ { ret self.error("expecting ',' or ']'"); } + } + }; + } + + fn parse_object() -> result<json, error> { + self.bump(); + self.parse_whitespace(); + + let values = map::str_hash(); + + if self.ch == '}' { + self.bump(); + ret ok(dict(values)); + } + + while !self.eof() { + self.parse_whitespace(); + + if self.ch != '"' { + ret self.error("key must be a string"); + } + + let key = alt self.parse_str() { + ok(key) { key } + err(e) { ret err(e); } + }; + + self.parse_whitespace(); + + if self.ch != ':' { + if self.eof() { break; } + ret self.error("expecting ':'"); + } + self.bump(); + + alt self.parse_value() { + ok(value) { values.insert(key, value); } + e { ret e; } + } + self.parse_whitespace(); + + alt self.ch { + ',' { self.bump(); } + '}' { self.bump(); ret ok(dict(values)); } + _ { + if self.eof() { break; } + ret self.error("expecting ',' or '}'"); + } + } + } + + ret self.error("EOF while parsing object"); + } +} + +#[doc = "Deserializes a json value from an io::reader"] +fn from_reader(rdr: io::reader) -> result<json, error> { + let parser = { + rdr: rdr, + mut ch: rdr.read_char(), + mut line: 1u, + mut col: 1u, + }; + + parser.parse() +} + +#[doc = "Deserializes a json value from a string"] +fn from_str(s: str) -> result<json, error> { + io::with_str_reader(s, from_reader) +} + +#[doc = "Test if two json values are equal"] +fn eq(value0: json, value1: json) -> bool { + alt (value0, value1) { + (num(f0), num(f1)) { f0 == f1 } + (string(s0), string(s1)) { s0 == s1 } + (boolean(b0), boolean(b1)) { b0 == b1 } + (list(l0), list(l1)) { vec::all2(l0, l1, eq) } + (dict(d0), dict(d1)) { + if d0.size() == d1.size() { + let mut equal = true; + d0.items { |k, v0| + alt d1.find(k) { + some(v1) { + if !eq(v0, v1) { equal = false; } } + none { equal = false; } + } + }; + equal + } else { + false + } + } + (null, null) { true } + _ { false } + } +} + +#[cfg(test)] +mod tests { + fn mk_dict(items: [(str, json)]) -> json { + let d = map::str_hash(); + + vec::iter(items) { |item| + let (key, value) = item; + d.insert(key, value); + }; + + dict(d) + } + + #[test] + fn test_write_null() { + assert to_str(null) == "null"; + } + + #[test] + fn test_write_num() { + assert to_str(num(3f)) == "3"; + assert to_str(num(3.1f)) == "3.1"; + assert to_str(num(-1.5f)) == "-1.5"; + assert to_str(num(0.5f)) == "0.5"; + } + + #[test] + fn test_write_str() { + assert to_str(string("")) == "\"\""; + assert to_str(string("foo")) == "\"foo\""; + } + + #[test] + fn test_write_bool() { + assert to_str(boolean(true)) == "true"; + assert to_str(boolean(false)) == "false"; + } + + #[test] + fn test_write_list() { + assert to_str(list([])) == "[]"; + assert to_str(list([boolean(true)])) == "[true]"; + assert to_str(list([ + boolean(false), + null, + list([string("foo\nbar"), num(3.5f)]) + ])) == "[false, null, [\"foo\\nbar\", 3.5]]"; + } + + #[test] + fn test_write_dict() { + assert to_str(mk_dict([])) == "{}"; + assert to_str(mk_dict([("a", boolean(true))])) == "{ \"a\": true }"; + assert to_str(mk_dict([ + ("a", boolean(true)), + ("b", list([ + mk_dict([("c", string("\x0c\r"))]), + mk_dict([("d", string(""))]) + ])) + ])) == + "{ " + + "\"a\": true, " + + "\"b\": [" + + "{ \"c\": \"\\f\\r\" }, " + + "{ \"d\": \"\" }" + + "]" + + " }"; + } + + #[test] + fn test_trailing_characters() { + assert from_str("nulla") == + err({line: 1u, col: 5u, msg: "trailing characters"}); + assert from_str("truea") == + err({line: 1u, col: 5u, msg: "trailing characters"}); + assert from_str("falsea") == + err({line: 1u, col: 6u, msg: "trailing characters"}); + assert from_str("1a") == + err({line: 1u, col: 2u, msg: "trailing characters"}); + assert from_str("[]a") == + err({line: 1u, col: 3u, msg: "trailing characters"}); + assert from_str("{}a") == + err({line: 1u, col: 3u, msg: "trailing characters"}); + } + + #[test] + fn test_read_identifiers() { + assert from_str("n") == + err({line: 1u, col: 2u, msg: "invalid syntax"}); + assert from_str("nul") == + err({line: 1u, col: 4u, msg: "invalid syntax"}); + + assert from_str("t") == + err({line: 1u, col: 2u, msg: "invalid syntax"}); + assert from_str("truz") == + err({line: 1u, col: 4u, msg: "invalid syntax"}); + + assert from_str("f") == + err({line: 1u, col: 2u, msg: "invalid syntax"}); + assert from_str("faz") == + err({line: 1u, col: 3u, msg: "invalid syntax"}); + + assert from_str("null") == ok(null); + assert from_str("true") == ok(boolean(true)); + assert from_str("false") == ok(boolean(false)); + assert from_str(" null ") == ok(null); + assert from_str(" true ") == ok(boolean(true)); + assert from_str(" false ") == ok(boolean(false)); + } + + #[test] + fn test_read_num() { + assert from_str("+") == + err({line: 1u, col: 1u, msg: "invalid syntax"}); + assert from_str(".") == + err({line: 1u, col: 1u, msg: "invalid syntax"}); + + assert from_str("-") == + err({line: 1u, col: 2u, msg: "invalid number"}); + assert from_str("00") == + err({line: 1u, col: 2u, msg: "invalid number"}); + assert from_str("1.") == + err({line: 1u, col: 3u, msg: "invalid number"}); + assert from_str("1e") == + err({line: 1u, col: 3u, msg: "invalid number"}); + assert from_str("1e+") == + err({line: 1u, col: 4u, msg: "invalid number"}); + + assert from_str("3") == ok(num(3f)); + assert from_str("3.1") == ok(num(3.1f)); + assert from_str("-1.2") == ok(num(-1.2f)); + assert from_str("0.4") == ok(num(0.4f)); + assert from_str("0.4e5") == ok(num(0.4e5f)); + assert from_str("0.4e+15") == ok(num(0.4e15f)); + assert from_str("0.4e-01") == ok(num(0.4e-01f)); + assert from_str(" 3 ") == ok(num(3f)); + } + + #[test] + fn test_read_str() { + assert from_str("\"") == + err({line: 1u, col: 2u, msg: "EOF while parsing string"}); + assert from_str("\"lol") == + err({line: 1u, col: 5u, msg: "EOF while parsing string"}); + + assert from_str("\"\"") == ok(string("")); + assert from_str("\"foo\"") == ok(string("foo")); + assert from_str("\"\\\"\"") == ok(string("\"")); + assert from_str("\"\\b\"") == ok(string("\x08")); + assert from_str("\"\\n\"") == ok(string("\n")); + assert from_str("\"\\r\"") == ok(string("\r")); + assert from_str("\"\\t\"") == ok(string("\t")); + assert from_str(" \"foo\" ") == ok(string("foo")); + } + + #[test] + fn test_read_list() { + assert from_str("[") == + err({line: 1u, col: 2u, msg: "EOF while parsing value"}); + assert from_str("[1") == + err({line: 1u, col: 3u, msg: "EOF while parsing list"}); + assert from_str("[1,") == + err({line: 1u, col: 4u, msg: "EOF while parsing value"}); + assert from_str("[1,]") == + err({line: 1u, col: 4u, msg: "invalid syntax"}); + assert from_str("[6 7]") == + err({line: 1u, col: 4u, msg: "expecting ',' or ']'"}); + + assert from_str("[]") == ok(list([])); + assert from_str("[ ]") == ok(list([])); + assert from_str("[true]") == ok(list([boolean(true)])); + assert from_str("[ false ]") == ok(list([boolean(false)])); + assert from_str("[null]") == ok(list([null])); + assert from_str("[3, 1]") == ok(list([num(3f), num(1f)])); + assert from_str("\n[3, 2]\n") == ok(list([num(3f), num(2f)])); + assert from_str("[2, [4, 1]]") == + ok(list([num(2f), list([num(4f), num(1f)])])); + } + + #[test] + fn test_read_dict() { + assert from_str("{") == + err({line: 1u, col: 2u, msg: "EOF while parsing object"}); + assert from_str("{ ") == + err({line: 1u, col: 3u, msg: "EOF while parsing object"}); + assert from_str("{1") == + err({line: 1u, col: 2u, msg: "key must be a string"}); + assert from_str("{ \"a\"") == + err({line: 1u, col: 6u, msg: "EOF while parsing object"}); + assert from_str("{\"a\"") == + err({line: 1u, col: 5u, msg: "EOF while parsing object"}); + assert from_str("{\"a\" ") == + err({line: 1u, col: 6u, msg: "EOF while parsing object"}); + + assert from_str("{\"a\" 1") == + err({line: 1u, col: 6u, msg: "expecting ':'"}); + assert from_str("{\"a\":") == + err({line: 1u, col: 6u, msg: "EOF while parsing value"}); + assert from_str("{\"a\":1") == + err({line: 1u, col: 7u, msg: "EOF while parsing object"}); + assert from_str("{\"a\":1 1") == + err({line: 1u, col: 8u, msg: "expecting ',' or '}'"}); + assert from_str("{\"a\":1,") == + err({line: 1u, col: 8u, msg: "EOF while parsing object"}); + + assert eq(result::get(from_str("{}")), mk_dict([])); + assert eq(result::get(from_str("{\"a\": 3}")), + mk_dict([("a", num(3.0f))])); + + assert eq(result::get(from_str("{ \"a\": null, \"b\" : true }")), + mk_dict([("a", null), ("b", boolean(true))])); + assert eq(result::get(from_str("\n{ \"a\": null, \"b\" : true }\n")), + mk_dict([("a", null), ("b", boolean(true))])); + assert eq(result::get(from_str("{\"a\" : 1.0 ,\"b\": [ true ]}")), + mk_dict([ + ("a", num(1.0)), + ("b", list([boolean(true)])) + ])); + assert eq(result::get(from_str( + "{" + + "\"a\": 1.0, " + + "\"b\": [" + + "true," + + "\"foo\\nbar\", " + + "{ \"c\": {\"d\": null} } " + + "]" + + "}")), + mk_dict([ + ("a", num(1.0f)), + ("b", list([ + boolean(true), + string("foo\nbar"), + mk_dict([ + ("c", mk_dict([("d", null)])) + ]) + ])) + ])); + } + + #[test] + fn test_multiline_errors() { + assert from_str("{\n \"foo\":\n \"bar\"") == + err({line: 3u, col: 8u, msg: "EOF while parsing object"}); + } +} diff --git a/tests/examplefiles/test.R b/tests/examplefiles/test.R index c53edd13..54325339 100644 --- a/tests/examplefiles/test.R +++ b/tests/examplefiles/test.R @@ -1,119 +1,153 @@ -################################### -####### emplikH1.test() ########## -################################### - -emplikH1.test <- function(x, d, theta, fun, - tola = .Machine$double.eps^.25) -{ -n <- length(x) -if( n <= 2 ) stop("Need more observations") -if( length(d) != n ) stop("length of x and d must agree") -if(any((d!=0)&(d!=1))) stop("d must be 0/1's for censor/not-censor") -if(!is.numeric(x)) stop("x must be numeric values --- observed times") - -#temp<-summary(survfit(Surv(x,d),se.fit=F,type="fleming",conf.type="none")) -# -newdata <- Wdataclean2(x,d) -temp <- DnR(newdata$value, newdata$dd, newdata$weight) - -time <- temp$time # only uncensored time? Yes. -risk <- temp$n.risk -jump <- (temp$n.event)/risk - -funtime <- fun(time) -funh <- (n/risk) * funtime # that is Zi -funtimeTjump <- funtime * jump - -if(jump[length(jump)] >= 1) funh[length(jump)] <- 0 #for inthaz and weights - -inthaz <- function(x, ftj, fh, thet){ sum(ftj/(1 + x * fh)) - thet } - -diff <- inthaz(0, funtimeTjump, funh, theta) - -if( diff == 0 ) { lam <- 0 } else { - step <- 0.2/sqrt(n) - if(abs(diff) > 6*log(n)*step ) - stop("given theta value is too far away from theta0") - - mini<-0 - maxi<-0 - if(diff > 0) { - maxi <- step - while(inthaz(maxi, funtimeTjump, funh, theta) > 0 && maxi < 50*log(n)*step) - maxi <- maxi+step - } - else { - mini <- -step - while(inthaz(mini, funtimeTjump, funh, theta) < 0 && mini > - 50*log(n)*step) - mini <- mini - step - } - - if(inthaz(mini, funtimeTjump, funh, theta)*inthaz(maxi, funtimeTjump, funh, theta) > 0 ) - stop("given theta is too far away from theta0") - - temp2 <- uniroot(inthaz,c(mini,maxi), tol = tola, - ftj=funtimeTjump, fh=funh, thet=theta) - lam <- temp2$root +#!/usr/bin/env Rscript +### Example R script for syntax highlighting + +# This is also a comment + +## Valid names +abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV0123456789._a <- NULL +.foo_ <- NULL +._foo <- NULL + +## Invalid names +0abc <- NULL +.0abc <- NULL +abc+cde <- NULL + +## Reserved Words +NA +NA_integer_ +NA_real_ +NA_character_ +NA_complex_ +NULL +NaN +Inf +## Not reserved +NULLa <- NULL +NULL1 <- NULL +NULL. <- NULL +NA_foo_ <- NULL + +## Numbers +12345678901 +123456.78901 +123e3 +123E3 +1.23e-3 +1.23e3 +1.23e-3 +## integer constants +123L +1.23L +## imaginary numbers +123i +-123i +123e4i +123e-4i +## Hex numbers +0xabcdefABCDEF01234 +0xabcp123 +0xabcP123 +## Not hex +0xg + +## Special operators %xyz% +## %xyz% +1 %% 2 +diag(2) %*% diag(2) +1 %/% 2 +1 %in% 1:10 +diag(2) %o% diag(2) +diag(2) %x% diag(2) +`%foo bar%` <- function(x, y) x + y +1 %foo bar% 2 + +## Control Structures (3.2) and Function +## if, else +if (TRUE) print("foo") else print("bar") +## For, in +for(i in 1:5) { + print(i) } - -onepluslamh<- 1 + lam * funh ### this is 1 + lam Zi in Ref. - -weights <- jump/onepluslamh #need to change last jump to 1? NO. see above - -loglik <- 2*(sum(log(onepluslamh)) - sum((onepluslamh-1)/onepluslamh) ) -#?is that right? YES see (3.2) in Ref. above. This ALR, or Poisson LR. - -#last <- length(jump) ## to compute loglik2, we need to drop last jump -#if (jump[last] == 1) { -# risk1 <- risk[-last] -# jump1 <- jump[-last] -# weights1 <- weights[-last] -# } else { -# risk1 <- risk -# jump1 <- jump -# weights1 <- weights -# } -#loglik2 <- 2*( sum(log(onepluslamh)) + -# sum( (risk1 -1)*log((1-jump1)/(1- weights1) ) ) ) -##? this likelihood seems have negative values sometimes??? - -list( logemlik=loglik, ### logemlikv2=loglik2, - lambda=lam, times=time, wts=weights, - nits=temp2$nf, message=temp2$message ) +## While, break +i <- 1 +while (TRUE) { + i <- i + 1 + if (i > 3) break } - -library("graphics") - -par(mfrow = c(1, 2)) -# plot histogram -x <- rnorm(100) -if (max(x) > 100) - stop("Quite unexpected.") -else - hist(x, plot=TRUE, col="ivory") - -# from doc: lowess -plot(cars, main = "lowess(cars)") - lines(lowess(cars), col = 2) - lines(lowess(cars, f=.2), col = 3) - legend(5, 120, c(paste("f = ", c("2/3", ".2"))), lty = 1, col = 2:3) - -# from doc: is.na -is.na(c(1, NA)) - -# from doc: Extract -y <- list(1,2,a=4,5) -y[c(3,4)] # a list containing elements 3 and 4 of y -y$a # the element of y named a - -# from doc: for -for(n in c(2,5,10,20,50)) { - x <- stats::rnorm(n) - cat(n,":", sum(x2),"\n") +## Repeat +repeat {1+1} +## Switch +x <- 3 +switch(x, 2+2, mean(1:10), rnorm(5)) +## Function, dot-dot-dot, return +foo <- function(...) { + return(sum(...)) +} +# Not keywords +functiona <- 2 + 2 +function. <- 2 + 2 +function1 <- 2 + 2 + + +## Grouping Tokens 10.3.7 +## Parentheses +1 + (2 + 3) +## brackets +foo <- function(a) { + a + 1 } -class(fo <- y ~ x1*x2) # "formula" - - - - +## Indexing 10.3.8 +## [] +bar <- 1:10 +bar[3] +## [[]] +foo <- list(a=1, b=2, c=3) +foo[["a"]] +## $ +foo$a +foo$"a" + +## Operators +2 - 2 +2 + 2 +2 ~ 2 +! TRUE +?"help" +1:2 +2 * 2 +2 / 2 +2^2 +2 < 2 +2 > 2 +2 == 2 +2 >= 2 +2 <= 2 +2 != 2 +TRUE & FALSE +TRUE && FALSE +TRUE | FALSE +TRUE || FALSE +foo <- 2 + 2 +foo = 2 + 2 +2 + 2 -> foo +foo <<- 2 + 2 +2 + 2 ->> foo +base:::sum +base::sum + +## Strings +foo <- "hello, world!" +foo <- 'hello, world!' +foo <- "Hello, 'world!" +foo <- 'Hello, "world!' +foo <- 'Hello, \'world!\'' +foo <- "Hello, \"world!\"" +foo <- "Hello, +world!" +foo <- 'Hello, +world!' + +## Backtick strings +`foo123 +!"bar'baz` <- 2 + 2 diff --git a/tests/examplefiles/test.cu b/tests/examplefiles/test.cu new file mode 100644 index 00000000..19f66802 --- /dev/null +++ b/tests/examplefiles/test.cu @@ -0,0 +1,36 @@ +#include <stdio.h> + +// __device__ function +__device__ void func() +{ + short* array0 = (short*)array; + float* array1 = (float*)&array0[127]; +} + +/* __global__ function */ +__global__ static void reduction(const float* __restrict__ input, float *output, clock_t *timer) +{ + // __shared__ float shared[2 * blockDim.x]; + extern __shared__ float shared[]; + + const int tid = threadIdx.x; + const int bid = blockIdx.x; + + if (threadIdx.x == 0) { + __threadfence(); + } + + // Perform reduction to find minimum. + for (int d = blockDim.x; d > 0; d /= 2) + { + __syncthreads(); + } +} + +int main(int argc, char **argv) +{ + dim3 dimBlock(8, 8, 1); + + timedReduction<<<dimBlock, 256, 256, 0>>>(dinput, doutput, dtimer); + cudaDeviceReset(); +} |