pygments.rb 0.5.4 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +40 -0
- data/README.md +3 -0
- data/lexers +0 -0
- data/lib/pygments/popen.rb +3 -2
- data/lib/pygments/version.rb +1 -1
- data/pygments.rb.gemspec +2 -1
- data/vendor/pygments-main/AUTHORS +20 -1
- data/vendor/pygments-main/CHANGES +55 -3
- data/vendor/pygments-main/LICENSE +1 -1
- data/vendor/pygments-main/MANIFEST.in +1 -1
- data/vendor/pygments-main/Makefile +5 -8
- data/vendor/pygments-main/REVISION +1 -1
- data/vendor/pygments-main/doc/Makefile +153 -0
- data/vendor/pygments-main/doc/_static/favicon.ico +0 -0
- data/vendor/pygments-main/doc/_static/logo_new.png +0 -0
- data/vendor/pygments-main/doc/_static/logo_only.png +0 -0
- data/vendor/pygments-main/doc/_templates/docssidebar.html +3 -0
- data/vendor/pygments-main/doc/_templates/indexsidebar.html +25 -0
- data/vendor/pygments-main/doc/_themes/pygments14/layout.html +98 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/bodybg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/docbg.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/listitem.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/logo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pocoo.png +0 -0
- data/vendor/pygments-main/doc/_themes/pygments14/static/pygments14.css_t +401 -0
- data/vendor/pygments-main/doc/_themes/pygments14/theme.conf +15 -0
- data/vendor/pygments-main/doc/conf.py +249 -0
- data/vendor/pygments-main/doc/docs/api.rst +316 -0
- data/vendor/pygments-main/doc/docs/authors.rst +4 -0
- data/vendor/pygments-main/doc/docs/changelog.rst +1 -0
- data/vendor/pygments-main/{docs/src/cmdline.txt → doc/docs/cmdline.rst} +9 -11
- data/vendor/pygments-main/{docs/src/filterdevelopment.txt → doc/docs/filterdevelopment.rst} +1 -1
- data/vendor/pygments-main/{docs/src/filters.txt → doc/docs/filters.rst} +4 -5
- data/vendor/pygments-main/{docs/src/formatterdevelopment.txt → doc/docs/formatterdevelopment.rst} +1 -1
- data/vendor/pygments-main/{docs/src/formatters.txt → doc/docs/formatters.rst} +6 -6
- data/vendor/pygments-main/doc/docs/index.rst +66 -0
- data/vendor/pygments-main/{docs/src/integrate.txt → doc/docs/integrate.rst} +3 -7
- data/vendor/pygments-main/{docs/src/java.txt → doc/docs/java.rst} +0 -0
- data/vendor/pygments-main/{docs/src/lexerdevelopment.txt → doc/docs/lexerdevelopment.rst} +13 -14
- data/vendor/pygments-main/{docs/src/lexers.txt → doc/docs/lexers.rst} +7 -5
- data/vendor/pygments-main/{docs/src/moinmoin.txt → doc/docs/moinmoin.rst} +0 -0
- data/vendor/pygments-main/{docs/src/plugins.txt → doc/docs/plugins.rst} +0 -0
- data/vendor/pygments-main/{docs/src/quickstart.txt → doc/docs/quickstart.rst} +22 -19
- data/vendor/pygments-main/{docs/src/rstdirective.txt → doc/docs/rstdirective.rst} +0 -0
- data/vendor/pygments-main/{docs/src/styles.txt → doc/docs/styles.rst} +2 -2
- data/vendor/pygments-main/{docs/src/tokens.txt → doc/docs/tokens.rst} +10 -7
- data/vendor/pygments-main/{docs/src/unicode.txt → doc/docs/unicode.rst} +8 -7
- data/vendor/pygments-main/doc/download.rst +41 -0
- data/vendor/pygments-main/doc/faq.rst +143 -0
- data/vendor/pygments-main/doc/index.rst +53 -0
- data/vendor/pygments-main/doc/languages.rst +151 -0
- data/vendor/pygments-main/doc/make.bat +190 -0
- data/vendor/pygments-main/{docs → doc}/pygmentize.1 +0 -0
- data/vendor/pygments-main/external/autopygmentize +65 -48
- data/vendor/pygments-main/external/markdown-processor.py +15 -15
- data/vendor/pygments-main/external/moin-parser.py +1 -1
- data/vendor/pygments-main/external/rst-directive.py +2 -3
- data/vendor/pygments-main/ez_setup.py +340 -234
- data/vendor/pygments-main/pygments/__init__.py +4 -4
- data/vendor/pygments-main/pygments/cmdline.py +81 -68
- data/vendor/pygments-main/pygments/console.py +1 -1
- data/vendor/pygments-main/pygments/filter.py +1 -1
- data/vendor/pygments-main/pygments/filters/__init__.py +11 -9
- data/vendor/pygments-main/pygments/formatter.py +3 -3
- data/vendor/pygments-main/pygments/formatters/__init__.py +5 -3
- data/vendor/pygments-main/pygments/formatters/_mapping.py +16 -5
- data/vendor/pygments-main/pygments/formatters/bbcode.py +1 -1
- data/vendor/pygments-main/pygments/formatters/html.py +44 -26
- data/vendor/pygments-main/pygments/formatters/img.py +21 -14
- data/vendor/pygments-main/pygments/formatters/latex.py +104 -12
- data/vendor/pygments-main/pygments/formatters/other.py +53 -6
- data/vendor/pygments-main/pygments/formatters/rtf.py +30 -16
- data/vendor/pygments-main/pygments/formatters/svg.py +2 -2
- data/vendor/pygments-main/pygments/formatters/terminal.py +41 -1
- data/vendor/pygments-main/pygments/formatters/terminal256.py +2 -2
- data/vendor/pygments-main/pygments/lexer.py +59 -39
- data/vendor/pygments-main/pygments/lexers/__init__.py +38 -15
- data/vendor/pygments-main/pygments/lexers/_asybuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_clbuiltins.py +15 -15
- data/vendor/pygments-main/pygments/lexers/_cocoabuiltins.py +73 -0
- data/vendor/pygments-main/pygments/lexers/_lassobuiltins.py +11 -1
- data/vendor/pygments-main/pygments/lexers/_luabuiltins.py +14 -8
- data/vendor/pygments-main/pygments/lexers/_mapping.py +81 -30
- data/vendor/pygments-main/pygments/lexers/_openedgebuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_phpbuiltins.py +1067 -95
- data/vendor/pygments-main/pygments/lexers/_postgres_builtins.py +7 -7
- data/vendor/pygments-main/pygments/lexers/_robotframeworklexer.py +5 -4
- data/vendor/pygments-main/pygments/lexers/_scilab_builtins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/_sourcemodbuiltins.py +12 -7
- data/vendor/pygments-main/pygments/lexers/_stan_builtins.py +112 -18
- data/vendor/pygments-main/pygments/lexers/_vimbuiltins.py +1 -1
- data/vendor/pygments-main/pygments/lexers/agile.py +644 -382
- data/vendor/pygments-main/pygments/lexers/asm.py +66 -29
- data/vendor/pygments-main/pygments/lexers/compiled.py +1643 -174
- data/vendor/pygments-main/pygments/lexers/dalvik.py +27 -6
- data/vendor/pygments-main/pygments/lexers/dotnet.py +45 -33
- data/vendor/pygments-main/pygments/lexers/foxpro.py +3 -3
- data/vendor/pygments-main/pygments/lexers/functional.py +1510 -570
- data/vendor/pygments-main/pygments/lexers/graph.py +81 -0
- data/vendor/pygments-main/pygments/lexers/hdl.py +29 -30
- data/vendor/pygments-main/pygments/lexers/inferno.py +96 -0
- data/vendor/pygments-main/pygments/lexers/jvm.py +622 -207
- data/vendor/pygments-main/pygments/lexers/math.py +438 -70
- data/vendor/pygments-main/pygments/lexers/other.py +885 -171
- data/vendor/pygments-main/pygments/lexers/parsers.py +24 -24
- data/vendor/pygments-main/pygments/lexers/qbasic.py +157 -0
- data/vendor/pygments-main/pygments/lexers/rdf.py +99 -0
- data/vendor/pygments-main/pygments/lexers/shell.py +28 -25
- data/vendor/pygments-main/pygments/lexers/special.py +7 -8
- data/vendor/pygments-main/pygments/lexers/sql.py +56 -23
- data/vendor/pygments-main/pygments/lexers/templates.py +377 -59
- data/vendor/pygments-main/pygments/lexers/text.py +208 -46
- data/vendor/pygments-main/pygments/lexers/web.py +729 -264
- data/vendor/pygments-main/pygments/modeline.py +1 -1
- data/vendor/pygments-main/pygments/plugin.py +1 -1
- data/vendor/pygments-main/pygments/scanner.py +1 -1
- data/vendor/pygments-main/pygments/sphinxext.py +153 -0
- data/vendor/pygments-main/pygments/style.py +3 -2
- data/vendor/pygments-main/pygments/styles/__init__.py +5 -1
- data/vendor/pygments-main/pygments/styles/autumn.py +1 -1
- data/vendor/pygments-main/pygments/styles/borland.py +1 -1
- data/vendor/pygments-main/pygments/styles/bw.py +1 -1
- data/vendor/pygments-main/pygments/styles/colorful.py +1 -1
- data/vendor/pygments-main/pygments/styles/default.py +1 -1
- data/vendor/pygments-main/pygments/styles/emacs.py +1 -1
- data/vendor/pygments-main/pygments/styles/friendly.py +1 -1
- data/vendor/pygments-main/pygments/styles/fruity.py +1 -1
- data/vendor/pygments-main/pygments/styles/igor.py +29 -0
- data/vendor/pygments-main/pygments/styles/manni.py +1 -1
- data/vendor/pygments-main/pygments/styles/monokai.py +4 -4
- data/vendor/pygments-main/pygments/styles/murphy.py +1 -1
- data/vendor/pygments-main/pygments/styles/native.py +1 -1
- data/vendor/pygments-main/pygments/styles/paraiso_dark.py +125 -0
- data/vendor/pygments-main/pygments/styles/paraiso_light.py +125 -0
- data/vendor/pygments-main/pygments/styles/pastie.py +1 -1
- data/vendor/pygments-main/pygments/styles/perldoc.py +1 -1
- data/vendor/pygments-main/pygments/styles/rrt.py +1 -1
- data/vendor/pygments-main/pygments/styles/tango.py +1 -1
- data/vendor/pygments-main/pygments/styles/trac.py +1 -1
- data/vendor/pygments-main/pygments/styles/vim.py +1 -1
- data/vendor/pygments-main/pygments/styles/vs.py +1 -1
- data/vendor/pygments-main/pygments/styles/xcode.py +51 -0
- data/vendor/pygments-main/pygments/token.py +4 -1
- data/vendor/pygments-main/pygments/unistring.py +6 -5
- data/vendor/pygments-main/pygments/util.py +35 -21
- data/vendor/pygments-main/scripts/check_sources.py +28 -44
- data/vendor/pygments-main/scripts/detect_missing_analyse_text.py +5 -4
- data/vendor/pygments-main/scripts/find_codetags.py +27 -19
- data/vendor/pygments-main/scripts/find_error.py +16 -13
- data/vendor/pygments-main/scripts/get_vimkw.py +3 -3
- data/vendor/pygments-main/scripts/vim2pygments.py +9 -7
- data/vendor/pygments-main/setup.py +19 -19
- data/vendor/pygments-main/tests/examplefiles/99_bottles_of_beer.chpl +118 -0
- data/vendor/pygments-main/tests/examplefiles/Error.pmod +38 -0
- data/vendor/pygments-main/tests/examplefiles/FakeFile.pike +360 -0
- data/vendor/pygments-main/tests/examplefiles/{ANTLRv3.g → antlr_ANTLRv3.g} +0 -0
- data/vendor/pygments-main/tests/examplefiles/clojure-weird-keywords.clj +5 -0
- data/vendor/pygments-main/tests/examplefiles/core.cljs +52 -0
- data/vendor/pygments-main/tests/examplefiles/demo.cfm +13 -1
- data/vendor/pygments-main/tests/examplefiles/demo.hbs +12 -0
- data/vendor/pygments-main/tests/examplefiles/ember.handlebars +33 -0
- data/vendor/pygments-main/tests/examplefiles/example.als +217 -0
- data/vendor/pygments-main/tests/examplefiles/example.c +1 -1
- data/vendor/pygments-main/tests/examplefiles/example.chai +6 -0
- data/vendor/pygments-main/tests/examplefiles/example.coffee +27 -0
- data/vendor/pygments-main/tests/examplefiles/example.e +124 -0
- data/vendor/pygments-main/tests/examplefiles/example.f90 +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.feature +16 -0
- data/vendor/pygments-main/tests/examplefiles/example.gd +23 -0
- data/vendor/pygments-main/tests/examplefiles/example.gi +64 -0
- data/vendor/pygments-main/tests/examplefiles/example.groovy +2 -0
- data/vendor/pygments-main/tests/examplefiles/example.hs +27 -0
- data/vendor/pygments-main/tests/examplefiles/example.hx +44 -1
- data/vendor/pygments-main/tests/examplefiles/example.i6t +32 -0
- data/vendor/pygments-main/tests/examplefiles/example.i7x +45 -0
- data/vendor/pygments-main/tests/examplefiles/example.inf +374 -0
- data/vendor/pygments-main/tests/examplefiles/example.j +564 -0
- data/vendor/pygments-main/tests/examplefiles/example.java +16 -0
- data/vendor/pygments-main/tests/examplefiles/example.kal +75 -0
- data/vendor/pygments-main/tests/examplefiles/example.liquid +42 -0
- data/vendor/pygments-main/tests/examplefiles/example.ma +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.mq4 +187 -0
- data/vendor/pygments-main/tests/examplefiles/example.mqh +123 -0
- data/vendor/pygments-main/tests/examplefiles/example.ni +57 -0
- data/vendor/pygments-main/tests/examplefiles/example.nix +80 -0
- data/vendor/pygments-main/tests/examplefiles/example.pp +8 -0
- data/vendor/pygments-main/tests/examplefiles/example.red +257 -0
- data/vendor/pygments-main/tests/examplefiles/example.reds +150 -0
- data/vendor/pygments-main/tests/examplefiles/example.rkt +677 -29
- data/vendor/pygments-main/tests/examplefiles/example.sh +22 -0
- data/vendor/pygments-main/tests/examplefiles/example.slim +31 -0
- data/vendor/pygments-main/tests/examplefiles/example.sls +51 -0
- data/vendor/pygments-main/tests/examplefiles/example.stan +2 -0
- data/vendor/pygments-main/tests/examplefiles/example.todotxt +9 -0
- data/vendor/pygments-main/tests/examplefiles/exampleScript.cfc +241 -0
- data/vendor/pygments-main/tests/examplefiles/exampleTag.cfc +18 -0
- data/vendor/pygments-main/tests/examplefiles/example_elixir.ex +192 -350
- data/vendor/pygments-main/tests/examplefiles/hash_syntax.rb +5 -0
- data/vendor/pygments-main/tests/examplefiles/hello.at +6 -0
- data/vendor/pygments-main/tests/examplefiles/hello.golo +5 -0
- data/vendor/pygments-main/tests/examplefiles/hello.lsl +12 -0
- data/vendor/pygments-main/tests/examplefiles/{File.hy → hybris_File.hy} +0 -0
- data/vendor/pygments-main/tests/examplefiles/{mg_sample.pro → idl_sample.pro} +0 -0
- data/vendor/pygments-main/tests/examplefiles/iex_example +23 -0
- data/vendor/pygments-main/tests/examplefiles/inet_pton6.dg +24 -24
- data/vendor/pygments-main/tests/examplefiles/language.hy +165 -0
- data/vendor/pygments-main/tests/examplefiles/limbo.b +456 -0
- data/vendor/pygments-main/tests/examplefiles/livescript-demo.ls +3 -1
- data/vendor/pygments-main/tests/examplefiles/main.cmake +2 -0
- data/vendor/pygments-main/tests/examplefiles/objc_example.m +163 -16
- data/vendor/pygments-main/tests/examplefiles/{example.p → openedge_example} +0 -0
- data/vendor/pygments-main/tests/examplefiles/pawn_example +25 -0
- data/vendor/pygments-main/tests/examplefiles/qbasic_example +2 -0
- data/vendor/pygments-main/tests/examplefiles/r6rs-comments.scm +23 -0
- data/vendor/pygments-main/tests/examplefiles/{robotframework.txt → robotframework_test.txt} +0 -0
- data/vendor/pygments-main/tests/examplefiles/rql-queries.rql +34 -0
- data/vendor/pygments-main/tests/examplefiles/scope.cirru +43 -0
- data/vendor/pygments-main/tests/examplefiles/sparql.rq +23 -0
- data/vendor/pygments-main/tests/examplefiles/test.R +37 -5
- data/vendor/pygments-main/tests/examplefiles/test.apl +26 -0
- data/vendor/pygments-main/tests/examplefiles/test.cyp +123 -0
- data/vendor/pygments-main/tests/examplefiles/test.idr +93 -0
- data/vendor/pygments-main/tests/examplefiles/test.mask +41 -0
- data/vendor/pygments-main/tests/examplefiles/test.pan +54 -0
- data/vendor/pygments-main/tests/examplefiles/test.php +3 -1
- data/vendor/pygments-main/tests/examplefiles/test.pig +148 -0
- data/vendor/pygments-main/tests/examplefiles/test.pwn +253 -0
- data/vendor/pygments-main/tests/examplefiles/test.r3 +27 -7
- data/vendor/pygments-main/tests/examplefiles/test.rsl +111 -0
- data/vendor/pygments-main/tests/examplefiles/test.swift +65 -0
- data/vendor/pygments-main/tests/examplefiles/test.zep +33 -0
- data/vendor/pygments-main/tests/examplefiles/unicode.go +10 -0
- data/vendor/pygments-main/tests/examplefiles/{test.bas → vbnet_test.bas} +0 -0
- data/vendor/pygments-main/tests/examplefiles/vctreestatus_hg +4 -0
- data/vendor/pygments-main/tests/examplefiles/vimrc +21 -0
- data/vendor/pygments-main/tests/run.py +14 -19
- data/vendor/pygments-main/tests/string_asserts.py +22 -0
- data/vendor/pygments-main/tests/test_basic_api.py +28 -14
- data/vendor/pygments-main/tests/test_cfm.py +46 -0
- data/vendor/pygments-main/tests/test_clexer.py +208 -3
- data/vendor/pygments-main/tests/test_cmdline.py +6 -5
- data/vendor/pygments-main/tests/test_examplefiles.py +30 -19
- data/vendor/pygments-main/tests/test_html_formatter.py +15 -13
- data/vendor/pygments-main/tests/test_latex_formatter.py +4 -2
- data/vendor/pygments-main/tests/test_lexers_other.py +11 -11
- data/vendor/pygments-main/tests/test_objectiveclexer.py +81 -0
- data/vendor/pygments-main/tests/test_perllexer.py +1 -1
- data/vendor/pygments-main/tests/test_qbasiclexer.py +43 -0
- data/vendor/pygments-main/tests/test_regexlexer.py +8 -1
- data/vendor/pygments-main/tests/test_rtf_formatter.py +109 -0
- data/vendor/pygments-main/tests/test_string_asserts.py +39 -0
- data/vendor/pygments-main/tests/test_token.py +3 -3
- data/vendor/pygments-main/tests/test_using_api.py +1 -1
- data/vendor/pygments-main/tests/test_util.py +1 -1
- metadata +138 -51
- data/vendor/pygments-main/docs/generate.py +0 -472
- data/vendor/pygments-main/docs/src/api.txt +0 -270
- data/vendor/pygments-main/docs/src/authors.txt +0 -5
- data/vendor/pygments-main/docs/src/changelog.txt +0 -5
- data/vendor/pygments-main/docs/src/index.txt +0 -69
- data/vendor/pygments-main/docs/src/installation.txt +0 -71
- data/vendor/pygments-main/external/rst-directive-old.py +0 -77
- data/vendor/pygments-main/scripts/reindent.py +0 -291
- data/vendor/pygments-main/tests/examplefiles/import.hs +0 -4
- data/vendor/pygments-main/tests/examplefiles/objc_example2.m +0 -24
- data/vendor/pygments-main/tests/old_run.py +0 -138
@@ -1,4 +1,11 @@
|
|
1
1
|
<!--- cfcomment --->
|
2
|
+
<!--- nested <!--- cfcomment ---> --->
|
3
|
+
<!--- multi-line
|
4
|
+
nested
|
5
|
+
<!---
|
6
|
+
cfcomment
|
7
|
+
--->
|
8
|
+
--->
|
2
9
|
<!-- html comment -->
|
3
10
|
<html>
|
4
11
|
<head>
|
@@ -17,6 +24,9 @@
|
|
17
24
|
#IsDate("foo")#<br />
|
18
25
|
#DaysInMonth(RightNow)#
|
19
26
|
</cfoutput>
|
27
|
+
<cfset x="x">
|
28
|
+
<cfset y="y">
|
29
|
+
<cfset z="z">
|
20
30
|
<cfoutput group="x">
|
21
31
|
#x#
|
22
32
|
<cfoutput>#y#</cfoutput>
|
@@ -29,10 +39,12 @@
|
|
29
39
|
<cfset greeting = "Hello #person#">
|
30
40
|
|
31
41
|
<cfset greeting = "Hello" & " world!">
|
42
|
+
<cfset a = 5>
|
43
|
+
<cfset b = 10>
|
32
44
|
<cfset c = a^b>
|
33
45
|
<cfset c = a MOD b>
|
34
46
|
<cfset c = a / b>
|
35
47
|
<cfset c = a * b>
|
36
48
|
<cfset c = a + b>
|
37
49
|
<cfset c = a - b>
|
38
|
-
|
50
|
+
<!--- <!-- another <!--- nested --> ---> comment --->
|
@@ -0,0 +1,33 @@
|
|
1
|
+
{{#view EmberFirebaseChat.ChatView class="chat-container"}}
|
2
|
+
<div class="chat-messages-container">
|
3
|
+
<ul class="chat-messages">
|
4
|
+
{{#each message in content}}
|
5
|
+
<li>
|
6
|
+
[{{formatTimestamp "message.timestamp" fmtString="h:mm:ss A"}}]
|
7
|
+
<strong>{{message.sender}}</strong>: {{message.content}}
|
8
|
+
</li>
|
9
|
+
{{/each}}
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
{{! Comment }}
|
14
|
+
{{{unescaped value}}}
|
15
|
+
|
16
|
+
{{#view EmberFirebaseChat.InputView class="chat-input-container"}}
|
17
|
+
<form class="form-inline">
|
18
|
+
{{#if "auth.authed"}}
|
19
|
+
{{#if "auth.hasName"}}
|
20
|
+
<input type="text" id="message" placeholder="Message">
|
21
|
+
<button {{action "postMessage" target="view"}} class="btn">Send</button>
|
22
|
+
{{else}}
|
23
|
+
<input type="text" id="username" placeholder="Enter your username...">
|
24
|
+
<button {{action "pickName" target="view"}} class="btn">Send</button>
|
25
|
+
{{/if}}
|
26
|
+
{{else}}
|
27
|
+
<input type="text" placeholder="Log in with Persona to chat!" disabled="disabled">
|
28
|
+
<button {{action "login"}} class="btn">Login</button>
|
29
|
+
{{/if}}
|
30
|
+
</form>
|
31
|
+
{{/view}}
|
32
|
+
{{/view}}
|
33
|
+
|
@@ -0,0 +1,217 @@
|
|
1
|
+
module examples/systems/views
|
2
|
+
|
3
|
+
/*
|
4
|
+
* Model of views in object-oriented programming.
|
5
|
+
*
|
6
|
+
* Two object references, called the view and the backing,
|
7
|
+
* are related by a view mechanism when changes to the
|
8
|
+
* backing are automatically propagated to the view. Note
|
9
|
+
* that the state of a view need not be a projection of the
|
10
|
+
* state of the backing; the keySet method of Map, for
|
11
|
+
* example, produces two view relationships, and for the
|
12
|
+
* one in which the map is modified by changes to the key
|
13
|
+
* set, the value of the new map cannot be determined from
|
14
|
+
* the key set. Note that in the iterator view mechanism,
|
15
|
+
* the iterator is by this definition the backing object,
|
16
|
+
* since changes are propagated from iterator to collection
|
17
|
+
* and not vice versa. Oddly, a reference may be a view of
|
18
|
+
* more than one backing: there can be two iterators on the
|
19
|
+
* same collection, eg. A reference cannot be a view under
|
20
|
+
* more than one view type.
|
21
|
+
*
|
22
|
+
* A reference is made dirty when it is a backing for a view
|
23
|
+
* with which it is no longer related by the view invariant.
|
24
|
+
* This usually happens when a view is modified, either
|
25
|
+
* directly or via another backing. For example, changing a
|
26
|
+
* collection directly when it has an iterator invalidates
|
27
|
+
* it, as does changing the collection through one iterator
|
28
|
+
* when there are others.
|
29
|
+
*
|
30
|
+
* More work is needed if we want to model more closely the
|
31
|
+
* failure of an iterator when its collection is invalidated.
|
32
|
+
*
|
33
|
+
* As a terminological convention, when there are two
|
34
|
+
* complementary view relationships, we will give them types
|
35
|
+
* t and t'. For example, KeySetView propagates from map to
|
36
|
+
* set, and KeySetView' propagates from set to map.
|
37
|
+
*
|
38
|
+
* author: Daniel Jackson
|
39
|
+
*/
|
40
|
+
|
41
|
+
open util/ordering[State] as so
|
42
|
+
open util/relation as rel
|
43
|
+
|
44
|
+
sig Ref {}
|
45
|
+
sig Object {}
|
46
|
+
|
47
|
+
-- t->b->v in views when v is view of type t of backing b
|
48
|
+
-- dirty contains refs that have been invalidated
|
49
|
+
sig State {
|
50
|
+
refs: set Ref,
|
51
|
+
obj: refs -> one Object,
|
52
|
+
views: ViewType -> refs -> refs,
|
53
|
+
dirty: set refs
|
54
|
+
-- , anyviews: Ref -> Ref -- for visualization
|
55
|
+
}
|
56
|
+
-- {anyviews = ViewType.views}
|
57
|
+
|
58
|
+
sig Map extends Object {
|
59
|
+
keys: set Ref,
|
60
|
+
map: keys -> one Ref
|
61
|
+
}{all s: State | keys + Ref.map in s.refs}
|
62
|
+
sig MapRef extends Ref {}
|
63
|
+
fact {State.obj[MapRef] in Map}
|
64
|
+
|
65
|
+
sig Iterator extends Object {
|
66
|
+
left, done: set Ref,
|
67
|
+
lastRef: lone done
|
68
|
+
}{all s: State | done + left + lastRef in s.refs}
|
69
|
+
sig IteratorRef extends Ref {}
|
70
|
+
fact {State.obj[IteratorRef] in Iterator}
|
71
|
+
|
72
|
+
sig Set extends Object {
|
73
|
+
elts: set Ref
|
74
|
+
}{all s: State | elts in s.refs}
|
75
|
+
sig SetRef extends Ref {}
|
76
|
+
fact {State.obj[SetRef] in Set}
|
77
|
+
|
78
|
+
abstract sig ViewType {}
|
79
|
+
one sig KeySetView, KeySetView', IteratorView extends ViewType {}
|
80
|
+
fact ViewTypes {
|
81
|
+
State.views[KeySetView] in MapRef -> SetRef
|
82
|
+
State.views[KeySetView'] in SetRef -> MapRef
|
83
|
+
State.views[IteratorView] in IteratorRef -> SetRef
|
84
|
+
all s: State | s.views[KeySetView] = ~(s.views[KeySetView'])
|
85
|
+
}
|
86
|
+
|
87
|
+
/**
|
88
|
+
* mods is refs modified directly or by view mechanism
|
89
|
+
* doesn't handle possibility of modifying an object and its view at once?
|
90
|
+
* should we limit frame conds to non-dirty refs?
|
91
|
+
*/
|
92
|
+
pred modifies [pre, post: State, rs: set Ref] {
|
93
|
+
let vr = pre.views[ViewType], mods = rs.*vr {
|
94
|
+
all r: pre.refs - mods | pre.obj[r] = post.obj[r]
|
95
|
+
all b: mods, v: pre.refs, t: ViewType |
|
96
|
+
b->v in pre.views[t] => viewFrame [t, pre.obj[v], post.obj[v], post.obj[b]]
|
97
|
+
post.dirty = pre.dirty +
|
98
|
+
{b: pre.refs | some v: Ref, t: ViewType |
|
99
|
+
b->v in pre.views[t] && !viewFrame [t, pre.obj[v], post.obj[v], post.obj[b]]
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
pred allocates [pre, post: State, rs: set Ref] {
|
105
|
+
no rs & pre.refs
|
106
|
+
post.refs = pre.refs + rs
|
107
|
+
}
|
108
|
+
|
109
|
+
/**
|
110
|
+
* models frame condition that limits change to view object from v to v' when backing object changes to b'
|
111
|
+
*/
|
112
|
+
pred viewFrame [t: ViewType, v, v', b': Object] {
|
113
|
+
t in KeySetView => v'.elts = dom [b'.map]
|
114
|
+
t in KeySetView' => b'.elts = dom [v'.map]
|
115
|
+
t in KeySetView' => (b'.elts) <: (v.map) = (b'.elts) <: (v'.map)
|
116
|
+
t in IteratorView => v'.elts = b'.left + b'.done
|
117
|
+
}
|
118
|
+
|
119
|
+
pred MapRef.keySet [pre, post: State, setRefs: SetRef] {
|
120
|
+
post.obj[setRefs].elts = dom [pre.obj[this].map]
|
121
|
+
modifies [pre, post, none]
|
122
|
+
allocates [pre, post, setRefs]
|
123
|
+
post.views = pre.views + KeySetView->this->setRefs + KeySetView'->setRefs->this
|
124
|
+
}
|
125
|
+
|
126
|
+
pred MapRef.put [pre, post: State, k, v: Ref] {
|
127
|
+
post.obj[this].map = pre.obj[this].map ++ k->v
|
128
|
+
modifies [pre, post, this]
|
129
|
+
allocates [pre, post, none]
|
130
|
+
post.views = pre.views
|
131
|
+
}
|
132
|
+
|
133
|
+
pred SetRef.iterator [pre, post: State, iterRef: IteratorRef] {
|
134
|
+
let i = post.obj[iterRef] {
|
135
|
+
i.left = pre.obj[this].elts
|
136
|
+
no i.done + i.lastRef
|
137
|
+
}
|
138
|
+
modifies [pre,post,none]
|
139
|
+
allocates [pre, post, iterRef]
|
140
|
+
post.views = pre.views + IteratorView->iterRef->this
|
141
|
+
}
|
142
|
+
|
143
|
+
pred IteratorRef.remove [pre, post: State] {
|
144
|
+
let i = pre.obj[this], i' = post.obj[this] {
|
145
|
+
i'.left = i.left
|
146
|
+
i'.done = i.done - i.lastRef
|
147
|
+
no i'.lastRef
|
148
|
+
}
|
149
|
+
modifies [pre,post,this]
|
150
|
+
allocates [pre, post, none]
|
151
|
+
pre.views = post.views
|
152
|
+
}
|
153
|
+
|
154
|
+
pred IteratorRef.next [pre, post: State, ref: Ref] {
|
155
|
+
let i = pre.obj[this], i' = post.obj[this] {
|
156
|
+
ref in i.left
|
157
|
+
i'.left = i.left - ref
|
158
|
+
i'.done = i.done + ref
|
159
|
+
i'.lastRef = ref
|
160
|
+
}
|
161
|
+
modifies [pre, post, this]
|
162
|
+
allocates [pre, post, none]
|
163
|
+
pre.views = post.views
|
164
|
+
}
|
165
|
+
|
166
|
+
pred IteratorRef.hasNext [s: State] {
|
167
|
+
some s.obj[this].left
|
168
|
+
}
|
169
|
+
|
170
|
+
assert zippishOK {
|
171
|
+
all
|
172
|
+
ks, vs: SetRef,
|
173
|
+
m: MapRef,
|
174
|
+
ki, vi: IteratorRef,
|
175
|
+
k, v: Ref |
|
176
|
+
let s0=so/first,
|
177
|
+
s1=so/next[s0],
|
178
|
+
s2=so/next[s1],
|
179
|
+
s3=so/next[s2],
|
180
|
+
s4=so/next[s3],
|
181
|
+
s5=so/next[s4],
|
182
|
+
s6=so/next[s5],
|
183
|
+
s7=so/next[s6] |
|
184
|
+
({
|
185
|
+
precondition [s0, ks, vs, m]
|
186
|
+
no s0.dirty
|
187
|
+
ks.iterator [s0, s1, ki]
|
188
|
+
vs.iterator [s1, s2, vi]
|
189
|
+
ki.hasNext [s2]
|
190
|
+
vi.hasNext [s2]
|
191
|
+
ki.this/next [s2, s3, k]
|
192
|
+
vi.this/next [s3, s4, v]
|
193
|
+
m.put [s4, s5, k, v]
|
194
|
+
ki.remove [s5, s6]
|
195
|
+
vi.remove [s6, s7]
|
196
|
+
} => no State.dirty)
|
197
|
+
}
|
198
|
+
|
199
|
+
pred precondition [pre: State, ks, vs, m: Ref] {
|
200
|
+
// all these conditions and other errors discovered in scope of 6 but 8,3
|
201
|
+
// in initial state, must have view invariants hold
|
202
|
+
(all t: ViewType, b, v: pre.refs |
|
203
|
+
b->v in pre.views[t] => viewFrame [t, pre.obj[v], pre.obj[v], pre.obj[b]])
|
204
|
+
// sets are not aliases
|
205
|
+
-- ks != vs
|
206
|
+
// sets are not views of map
|
207
|
+
-- no (ks+vs)->m & ViewType.pre.views
|
208
|
+
// no iterator currently on either set
|
209
|
+
-- no Ref->(ks+vs) & ViewType.pre.views
|
210
|
+
}
|
211
|
+
|
212
|
+
check zippishOK for 6 but 8 State, 3 ViewType expect 1
|
213
|
+
|
214
|
+
/**
|
215
|
+
* experiment with controlling heap size
|
216
|
+
*/
|
217
|
+
fact {all s: State | #s.obj < 5}
|
@@ -195,7 +195,7 @@ char convertType(int type) {
|
|
195
195
|
case TYPE_INT: return 'I';
|
196
196
|
case TYPE_FLOAT: return 'F';
|
197
197
|
case TYPE_BOOLEAN: return 'Z';
|
198
|
-
default: yyerror("compiler-intern error in convertType().\n");
|
198
|
+
default : yyerror("compiler-intern error in convertType().\n");
|
199
199
|
}
|
200
200
|
return 0; /* to avoid compiler-warning */
|
201
201
|
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# function arrows
|
2
|
+
|
3
|
+
methodA:-> 'A'
|
4
|
+
methodB:=> 'B'
|
5
|
+
methodC:()=> 'C'
|
6
|
+
methodD:()-> 'D'
|
7
|
+
methodE:(a,b)-> 'E'
|
8
|
+
methodF:(c,d)-> 'F'
|
9
|
+
-> 'G'
|
10
|
+
=> 'H'
|
11
|
+
|
12
|
+
(-> 'I')
|
13
|
+
(=> 'J')
|
14
|
+
|
15
|
+
# strings
|
16
|
+
|
17
|
+
"#{wow}"
|
18
|
+
"w#{wow}w"
|
19
|
+
"#wow"
|
20
|
+
"wow#"
|
21
|
+
"w#ow"
|
22
|
+
|
23
|
+
'#{wow}'
|
24
|
+
'w#{wow}w'
|
25
|
+
'#wow'
|
26
|
+
'wow#'
|
27
|
+
'w#ow'
|
@@ -0,0 +1,124 @@
|
|
1
|
+
note
|
2
|
+
description : "[
|
3
|
+
This is use to have almost every language element."
|
4
|
+
|
5
|
+
That way, I can correctly test the lexer. %]"
|
6
|
+
|
7
|
+
Don't try to understand what it does. It's not even compilling.
|
8
|
+
]"
|
9
|
+
date : "August 6, 2013"
|
10
|
+
revision : "0.1"
|
11
|
+
|
12
|
+
class
|
13
|
+
SAMPLE
|
14
|
+
|
15
|
+
inherit
|
16
|
+
ARGUMENTS
|
17
|
+
rename
|
18
|
+
Command_line as Caller_command,
|
19
|
+
command_name as Application_name
|
20
|
+
undefine
|
21
|
+
out
|
22
|
+
end
|
23
|
+
ANY
|
24
|
+
export
|
25
|
+
{ANY} out
|
26
|
+
redefine
|
27
|
+
out
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
create
|
33
|
+
make
|
34
|
+
|
35
|
+
convert
|
36
|
+
as_boolean: {BOOLEAN}
|
37
|
+
|
38
|
+
feature {NONE} -- Initialization
|
39
|
+
|
40
|
+
make
|
41
|
+
-- Run application.
|
42
|
+
local
|
43
|
+
i1_:expanded INTEGER
|
44
|
+
f_1:REAL_64
|
45
|
+
l_char:CHARACTER_8
|
46
|
+
do
|
47
|
+
l_char:='!'
|
48
|
+
l_char:='%''
|
49
|
+
l_char:='%%'
|
50
|
+
i1_:=80 - 0x2F0C // 0C70 \\ 0b10110 * 1;
|
51
|
+
f_1:=0.1 / .567
|
52
|
+
f_1:=34.
|
53
|
+
f_1:=12345.67890
|
54
|
+
inspect i1_
|
55
|
+
when 1 then
|
56
|
+
io.output.put_integer (i1_) -- Comment
|
57
|
+
else
|
58
|
+
io.output.put_real (f_1.truncated_to_real)
|
59
|
+
end
|
60
|
+
io.output.put_string (CuRrEnt.out) -- Comment
|
61
|
+
(agent funct_1).call([1,2,"Coucou"])
|
62
|
+
end
|
63
|
+
|
64
|
+
feature -- Access
|
65
|
+
|
66
|
+
funct_1(x,y:separate INTEGER;a_text:READABLE_STRING_GENERAL):detachable BOOLEAN
|
67
|
+
obsolete "This function is obsolete"
|
68
|
+
require
|
69
|
+
Is_Attached: AttAched a_text
|
70
|
+
local
|
71
|
+
l_list:LIST[like x]
|
72
|
+
do
|
73
|
+
if (NOT a_text.is_empty=TrUe or elSe ((x<0 aNd x>10) oR (y>0 and then y<10))) xor True thEn
|
74
|
+
ResuLT := FalSe
|
75
|
+
elseif (acROss l_list as la_list SoMe la_list.item<0 end) implies a_text.is_boolean then
|
76
|
+
ResuLT := FalSe
|
77
|
+
else
|
78
|
+
Result := TruE
|
79
|
+
eND
|
80
|
+
from
|
81
|
+
l_list.start
|
82
|
+
until
|
83
|
+
l_list.exhausted
|
84
|
+
loop
|
85
|
+
l_list.forth
|
86
|
+
variant
|
87
|
+
l_list.count - l_list.index
|
88
|
+
end
|
89
|
+
check Current /= Void end
|
90
|
+
debug print("%"Here%"%N") end
|
91
|
+
ensure
|
92
|
+
Is_Cool_Not_Change: is_cool = old is_cool
|
93
|
+
end
|
94
|
+
|
95
|
+
is_cool:BOOLEAN
|
96
|
+
attribute
|
97
|
+
Result:=False
|
98
|
+
end
|
99
|
+
|
100
|
+
froZen c_malloc: POINTER is
|
101
|
+
exTErnal
|
102
|
+
"C inline use <stdlib.h>"
|
103
|
+
alIAs
|
104
|
+
"malloc (1)"
|
105
|
+
end
|
106
|
+
|
107
|
+
as_boolean:BOOLEAN
|
108
|
+
do
|
109
|
+
Result:=True
|
110
|
+
rescue
|
111
|
+
retry
|
112
|
+
end
|
113
|
+
|
114
|
+
feature {ANY} -- The redefine feature
|
115
|
+
|
116
|
+
out:STRING_8
|
117
|
+
once
|
118
|
+
reSUlt:=PrecursOr {ANY}
|
119
|
+
Result := "Hello Worl"+('d').out
|
120
|
+
end
|
121
|
+
|
122
|
+
invariant
|
123
|
+
Always_Cool: is_cool
|
124
|
+
end
|